Источник: Nuances of Programming
Курс SkillFactory Frontend-разработчик. Получите перспективную творческую профессию в IT.
Поверьте опыту фронтенд-разработчика: умение работать с 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, и результаты не заставят себя ждать.
Читайте также:
Перевод статьи Matt Burrell: 10 Docker Commands Every Frontend Developer Should Know