Поверьте опыту фронтенд-разработчика: умение работать с 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, и результаты не заставят себя ждать.
Читайте также:
- Уменьшаем размер образа Docker для приложения Next.js
- Руководство по Docker. Часть 2: Docker Compose для JavaScript, Python и Redis
- Как запустить несколько приложений React на одном порту Nginx с Docker
Читайте нас в Telegram, VK и Дзен
Перевод статьи Matt Burrell: 10 Docker Commands Every Frontend Developer Should Know