Поверьте опыту фронтенд-разработчика: умение работать с Docker упрощает процесс сборки, тестирования и развертывания веб-приложений.

В наши дни этот ценный навык востребован на рынке труда. Добавляя Docker к рабочему арсеналу, вы получаете выгодное преимущество в глазах потенциальных работодателей. Владение данным инструментом также подчеркивает ваше умение взаимодействовать с бэкенд-разработчиками, которые часто используют Docker. 

В статье мы проведем обзор ключевых команд Docker, которые должен знать каждый фронтенд-разработчик. 

Если хотите подкрепить теорию практическими примерами, клонируйте репозиторий GitHub по ссылке. Он содержит код для простого приложения React, созданного с помощью Vite.

В указанном демонстрационном репозитории Dockerfile дает инструкции Docker по созданию и запуску приложения React как статического сайта с использованием NGINX.

К делу!

1) docker build

Первая в списке обязательных для запоминания команд  —  docker build. Она создает образ Docker из Dockerfile, который представляет собой скрипт с инструкциями по созданию образа. 

Синтаксис для команды docker build выглядит так: 

docker build -t [image_name] [path/to/dockerfile]

Чтобы обратиться к примеру, переходим с помощью команды cd в корневую директорию проекта, в которой находится Dockerfile, и выполняем следующую команду: 

docker build -t my-app:v1 .

Аргумент -t (сокращенная форма от -tag) указывает для образа имя и необязательный тег, следующий за двоеточием. 

Как правило, теги нужны для различения версий образа. Если опустить тег в команде docker build -t my-app и выполнить ее в таком виде, то образ автоматически получит тег latest, т.е. самый последний.

2) docker images

Команда docker images выводит список всех Docker-образов, созданных локально. 

Выполнив эту команду, вы увидите в списке образ my-app. Обратите внимание, что команда docker images аналогична docker image ls.

3) docker run

После создания образа нужно его запустить. Для этого потребуется команда docker run, синтаксис которой представлен ниже: 

docker run -p <host_port>:<container_port> [image_name]

Например, запустим контейнер для образа с тегом my-app:v1 и получим к нему доступ через порт 80. Для этого выполняем: 

docker run -p 80:80 my-app:v1

Данный пример подразумевает, что Dockerfile открывает приложение на порту 80. Для сопоставления с другим портом хоста следует указать соответствующий номер в первой части аргумента -p.

Обратите внимание, что эта команда заблокирует окно терминала для выполняющегося процесса. Для запуска контейнера в фоновом режиме следует добавить аргумент -d, как показано ниже: 

docker run -d -p 80:80 my-app:v1

Команда возвращает id контейнера и передает контроль над окном терминала. 

При запуске контейнера Docker присваивает ему произвольное имя, допустим happy-einstein. Добавляя аргумент --name, можно указать свой вариант имени. 

Например, присвоим контейнеру, запускающему образ my-app, имя vite-app:

docker run -d -p 80:80 --name vite-app my-app:v1

4) docker ps

Команда docker ps предоставляет список всех запущенных в данный момент контейнеров. 

Если вы выполняли все предыдущие команды, то увидите в списке контейнер my-app, а также его id и имя образа. 

5) docker start/stop

Синтаксис команды для запуска или остановки контейнера выглядит так: 

docker start|stop <container_name> (or <container_id>)

В нашем случае останавливаем контейнер vite-app командой: 

docker stop vite-app

А для повторного запуска выполняем:

docker start vite-app

Примечание: как только контейнер прекращает работу, он более не отображается в списке запущенных контейнеров (docker ps). Но его по-прежнему можно увидеть в общем списке, если выполнить команду docker ps --all, которая показывает все работающие и остановленные контейнеры.  

6) docker logs

Для просмотра логов запущенного контейнера используется команда docker logs, синтаксис которой: 

docker logs [container_name]

Например, для просмотра логов контейнера vite-app воспользуемся командой: 

docker logs vite-app

Эта команда помогает проводить отладку проблем, связанных с запуском контейнера и выбросом исключений. 

7) docker exec

Рассмотрим еще одну полезную команду: docker exec. Она позволяет выполнять команды внутри запущенного контейнера. 

Синтаксис команды docker exec следующий: 

docker exec -it [container_name] [command_to_run]

Например, откроем оболочку внутри контейнера vite-app

docker exec -it vite-app sh

Примечание: для выхода из интерактивной оболочки следует ввести exit

8) docker login

После того как вы создали образ для приложения и убедились, что все исправно работает, возникает следующий вопрос: как поделиться им с командой или развернуть в облачном провайдере. В этом случае не обойтись без реестра контейнеров. 

Docker Hub  —  это общедоступный реестр контейнеров. Он обеспечивает свободный доступ и возможность скачивания хранящихся в нем образов за исключением тех случаев, когда репозиторий является приватным. 

Другие облачные провайдеры, такие как AWS, Azure и GCP, предоставляют приватные реестры контейнеров, позволяющие пользователям хранить свои образы и управлять ими.

При наличии аккаунта вход в Docker Hub осуществляется командой docker login -u <username>

Как правило, крупные облачные провайдеры предоставляют собственные CLI для доступа в свои реестры контейнеров. За более подробной информацией по данной теме можно обратиться к их документации. 

9) docker push

Команда docker push отправляет образ в Docker Hub. Ее синтаксис выглядит так:

docker push <username>/<image_name>

Обратите внимание, что Docker Hub подразумевает именование образа в следующем формате: имя пользователя Docker Hub, затем / и уникальное имя образа. 

При создании Docker-образа действует стандартное соглашение: 

docker build -t <username>/<image_name>:<tag_name>

Например, задумай я создать образ для личного аккаунта Docker Hub, то воспользовался бы такой командой: 

docker build -t matttburrellnet/vite-app:v1

Docker Hub автоматически отметит образ с именем vite-app как v1

10) docker pull

После входа в реестр контейнеров вы можете скачивать существующие образы командой docker pull, синтаксис которой: 

docker pull mattburrellnet/vite-app:v1

Если у вас есть опыт работы с Git, то заметите сходство в алгоритмах работы по отправке (push) и извлечению (pull) образов. 

Заключение 

Мы рассмотрели 10 ключевых команд Docker. Умение применять эти команды повышает продуктивность фронтенд-разработчика и его востребованность на рынке труда. Docker обеспечивает стабильную работу приложений в разных средах и облачных провайдерах, экономя время и силы разработчиков. 

Кроме того, навыки работы с Docker способствуют эффективному командному взаимодействию с коллегами-разработчиками. Настоятельно рекомендую начать освоение Docker, и результаты не заставят себя ждать. 

Читайте также:

Читайте нас в TelegramVK и Дзен


Перевод статьи Matt Burrell: 10 Docker Commands Every Frontend Developer Should Know

Предыдущая статьяОткажитесь от SQLite в пользу DuckDB
Следующая статьяКак Scalene с ИИ-рекомендациями оптимизирует код Python