Часть 2 – основные команды
В предыдущем посте «Часть 1 – терминология» мы рассмотрели основные термины, теперь посмотрим на основные команды для работы с докер.
Общее состояние докер
docker info
эта команда отвечает за вывод текущего состояния докер, а именно количество образов в кэше, количество запушённых контейнеров, версии библиотек докер и т.д.
Список образов
Команда: docker image ls
Вывод команды будет иметь следующий вид:
Здесь перечислены названия образов, их версии, хэши размеры и даты создания.
Детальная информация по образу
Команда: docker image inspect <имя образа>
Эта команда выведет результат в формате JSON, в котором есть информация об слоях образа, переменных окружения, выполняемых командах и т.п.
Скачивания образа
Команда: docker pull <имя образа>[:<тег>]
Данная команда позволяет скачать указанный образ, с необходимой версией и поместить его в локальные репозиторий. При этом если значение тег не указано, то используется “latest”. Важно понимать, что указание конкретной версии крайне желательно, ведь никто не может гарантировать, что ваше приложение будет работать с будущими версиями окружения. А при новом разворачивание контейнера в будущем, может быть скачена именно новая версия, с которой приложение скорее всего еще не проверялось.
По умолчанию образ получается с реестра Docker Hub, но можно и явно указать другой реестр, например:
docker pull docker-private.registry:1337/nginx
Если реестр требует аутентификации, то необходимо выполнить команду:
docker login docker-private.registry:1337
Запуск образа
Команда: docker run [-p <внешний порт на хосте>:<внутренни порт в контейнере>] <имя образа>
Эта команда позволяет запустить образ в контейнере, при этом опциональный параметр -p позволяет выполнить соединение указанного номера TCP/UDP порта на хост компьютере с TCP/UDP портом внутри контейнера. Например:
docker run -p 8080:80 nginx
Запустит образ с сервером nginx и при этом порт 8080 на локальном компьютере, будет связан с портом 80 внутри контейнера (на котором nginx слушает соединения). Таким образом доступ к nginx будет через порт 8080 локального хоста.
Список работающих контейнеров
Команда: docker ps
Вывод команды имеет следующий формат:
В первой колонке указан уникальный идентификатор контейнера. В последней уникальное имя образа, при этом имена образов генерируются автоматически (если не были заданы при создании). ). Также указано время работы, время создание контейнера и порты используемые контейнером.
По умолчанию команда показывает только работающие контейнеры, но вместе с опцией “-a”, команда отобразит и остановленные контейнеры: docker ps -a
Остановка контейнера
Для остановки используется команда docker stop <идентификатор контейнера>
Принудительное завершение контейнера
Для принудительной остановки используется команда: docker kill <идентификатор контейнера>.
Применяется в тех случаях когда команды stop не достаточно.
Удаление контейнера
Команда: docker rm <идентификатор контейнера>
Удаляет остановленный контейнер. <идентификатор контейнера> можно посмотреть командой «docker ps -a»
Удаление образа
Команда: docker rmi <идентификатор образа>
Удаляет не используемый образ. <идентификатор образа > можно посмотреть командой «docker ls»
В следующей части «Часть 3 – файл Dockerfile» рассмотрим правила написание сценариев для создания своих образов.
Сборка образа
Команда: docker build <путь к контексту или URL>
Данная команда произведет сборку образа и подготовит его к запуску. Стоит отметить, что все операции по сборке кэшируются и если в текущем слое слоях ниже не произошло изменений, то вместо выполнения действий заново берется кэшированный результат, что ускоряет процесс сборки.
Также можно сразу добавить метку для образа через ключ “-t”.
Например: docker build -t sathya:hello-world .
Эта комнада соберет образ в контексте текущей директории (значение “.”) и присвоит образу имя “sathya:hello-world”, где значение sathya – это название репозитория, а hello-world – тега.
Присвоение имени образу
Команда: docker tag <идентификатор образа> <имя для образа>
Данная команда присвоит образу с указанным идентификатором символьное имя, которое можно будет в дальнейшем использовать вместо идентификатора. Эта вспомогательная команда, которая упрощает ввод других команд, где вместо число буквенной абракадабры, можно будет вводить осмысленные имена.