Найти в Дзене
ekdeus.me

Команды docker

Ранее писал о том как установить, сегодня разберем наиболее частые команды docker. Команды для управления контейнерами Контейнер — главная единица в Docker. У описанных ниже команд есть общий синтаксис, который выглядит так: docker container название команды. container create Из названия понятно, что речь идет о создании нового контейнера. Это основная функция Docker, с нее начинается его работа. docker create [опции] название образа [дополнительные команды][аргументы]. В квадратных скобках указываются опциональные компоненты команды. Использовать их необязательно, но можно оптимизировать создаваемый контейнер под свои задачи. К примеру, добавить ссылку на другой контейнер с помощью тега –link. Или подключить Standard Input с помощью команды в духе: docker create -a STDIN название образа Либо создать контейнер из образа операционной системы Ubuntu, добавив подключение к терминалу и запуск bash при каждом старте Docker: docker create -t -I ubuntu bash Только при наличии терминала
Оглавление

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

Команды для управления контейнерами

Контейнер — главная единица в Docker.

У описанных ниже команд есть общий синтаксис, который выглядит так: docker container название команды.

  • create — создает контейнер из выбранного образа.
  • start — активирует уже существующий контейнер.
  • run — создает новый контейнер и сразу включает его.
  • ls — отображает все существующие контейнеры.
  • inspect — подробнее рассказывает о выбранном контейнере.
  • logs — выводит в консоль логи (то есть журнал событий).
  • stop — пытается остановить выбранный контейнер, отправив ему сигнал SIGTERM, требующий завершить всю активность и сохранить пользовательские данные. Если ответ занимает слишком много времени, то следом посылает сигнал SIGKILL, чтобы «убить» процесс без сохранения данных.
  • kill — выполняет ту же задачу, что и предыдущая команда, но пропускает шаг с отправкой SIGTERM. Сразу выключает контейнер, игнорируя сохранение пользовательских данных.
  • rm — удаляет выбранный контейнер (он должен быть выключен, чтобы команда сработала).

container create

Из названия понятно, что речь идет о создании нового контейнера. Это основная функция Docker, с нее начинается его работа.

docker create [опции] название образа [дополнительные команды][аргументы].

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

К примеру, добавить ссылку на другой контейнер с помощью тега –link. Или подключить Standard Input с помощью команды в духе:

docker create -a STDIN название образа

Либо создать контейнер из образа операционной системы Ubuntu, добавив подключение к терминалу и запуск bash при каждом старте Docker:

docker create -t -I ubuntu bash

Только при наличии терминала можно управлять контейнером. Поэтому его нужно обязательно запрашивать при каждому запуске.

container start

В отличие от предыдущей команды, эта запускает контейнер, который существует, но находится в нерабочем состоянии.

Синтаксис следующий: docker start [опции] название или ID контейнера [название или ID контейнера].

Все просто – вводите команду, а потом указываете название контейнера, чтобы его запустить:

docker start d8e1140989525— пример старта через ID контейнера d8e1140989525

docker start nginx — пример старта через название nginx

Какой из вариантов использовать, решает разработчик, ориентируясь на собственные предпочтения. Технических отличий нет.

container run

Комбинирует две вышеописанные команды. Сначала создает новый контейнер, а потом тут же его включает.

Синтаксис следующий: docker run [опции] название образа [команды][аргументы].

Практика та же, что мы видели в синтаксисе команды docker create. Разница в одном слове и доступных опциях.

Чтобы создать контейнер из образа Ubuntu и тут же взять контроль над ним через командную строку, нужно сделать запрос терминала через опции команды.

docker run -it ubuntu root@d8e1140989525:/

используется для подключения к контейнеру с возможностью передавать ему команды после создания.

stop

Останавливает его работу.

docker stop [опции] название или ID контейнера [название или ID контейнера].

restart

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

docker restart [опции] название или ID контейнера [название или ID контейнера].

Вводите команду, а потом указываете название контейнера, чтобы его перезапустить:

docker restart d8e1140989525— пример перезапуска через ID контейнера d8e1140989525
docker restart nginx — пример перезапуска через название nginx

container ls (или docker ps)

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

docker ps отображает в терминале все запущенные контейнеры. А при добавлении опции -a в список попадают все контейнеры, созданные в системе.

В вывод команды попадают следующие параметры:

  • ID — то есть кодовое значение конкретного контейнера.
  • IMAGE — образ, используемый контейнером.
  • COMMAND — список команд, которые должны выполняться сразу после запуска.
  • CREATED — статус и время, когда контейнер бы создан (допустим, «7 минут назад»).
  • STATUS — текущее состояние – включен ли и время работы с последнего запуска. Тут может отображаться код выхода и время, когда он произошел.
  • PORTS — порты, используемые контейнером из списка.
  • NAMES — более понятные в сравнении с ID имена, которые можно точно так же использовать для исполнения команд или поиска.

При желании можно использовать опцию volume, чтобы в терминале отображались только тома, являющиеся предпочтительным механизмом хранения данных в Docker.

logs

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

Если указать ключ –follow и название контейнера, то в терминал в реальном времени будут выводиться логи Docker. Так можно беспрерывно наблюдать за его работой и возможным появлением ошибок.

inspect (для контейнера)

Отображает подробную информацию из Docker после обращения к конкретному контейнеру.

docker inspect [опции] название или ID контейнера [название или ID контейнера].

По умолчанию отображает данные в формате JSON. Можно использовать дополнительную опцию –format для смены формата данных.

docker inspect –format=‘{{range .NetworkSettings.Networks}}{{.MacAddress}}{{end}}’ $INSTANCE_ID — пример вывода информации о MAC-адресе

docker inspect –format=‘{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}’ $INSTANCE_ID — пример вывода информации о портах

rm

Команда удаления одного или нескольких контейнеров Docker, найденных на диске вашего хостинга.

docker rm [опции] название или ID контейнера [название или ID контейнера].

Чтобы удалить сразу несколько контейнеров с разными названиями и ID, нужно ввести:

docker rm d8e1140989525

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

docker stop

Команды Docker для управления образами

Еще одна значимая единица в Docker — образы. Управление ими во многом похоже на управление контейнерами, но есть ряд отличий, которые важно учитывать. Причем как в командах, так и в опциях.

У описанных ниже команд есть общий синтаксис, который выглядит так: docker image название команды. Названия, собственно, ниже:

  • build — собирает образ с нуля.
  • push — отправляет образ в реестр.
  • pull — загружает готовый образ с необходимыми для работы параметрами.
  • ls — показывает все существующие образы.
  • history — показывает каждый слой образа в ретроспективе, отображая ряд полезных сведений.
  • inspect — рассказывает все, что известно об образе, включая данные, касающиеся отдельных слоев.
  • rm — удаляет образ Docker из системы.
  • images — списком показывает все образы Docker, найденные на диске.

Рассмотрим каждую из них немного подробнее.

build

С помощью этой команды можно собрать образ, используя заранее подобранные параметры. Собираются одни из данных, хранящихся в файлах Dockerfile. Они находятся по определенным URL или заранее загружены в файловую систему.

docker image build [опции] название и адрес файла Dockerfile, из которого будет собран образ.

Например, если вы хотите собрать образ с названием Timeweb и тегом host в директории moy_repositoriy, то надо ввести в терминал:

docker image build -t moy_repositoriy/testing:host

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

push

После сборки образа на диске хостинга его можно разместить в Docker Hub с помощью отдельной команды.

docker image push [опции] название и адрес, где будет размещен образ

docker image push moy_repositoriy/testing:host

Он будет размещен по адресу, указанному в команде push. После этого его смогут вытащить другие пользователи.

pull

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

Синтаксис следующий: docker image pull [опции] название и адрес, где будет размещен образ.

docker image pull moy_repositoriy/testing:host

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

ls

docker image ls отвечает за отображение в терминале дополнительной информации об образах. Она показывает их список (как и в случае с контейнерами) и информацию о размере каждого.

docker image pull [опции][адрес репозитория:тег].

В вывод команды можно добавить другие данные с помощью отдельных ключей:

-a — увеличивает список отображаемых образов за счет отображения даже промежуточных. –digests — добавляет в вывод команды еще и дайджесты. -f — фильтрует выдачу по заранее определенным условиям. –format — меняет формат отображения данных на основе шаблона Go. –no-trunc — отключает усечение информации в терминале. -q — показывает ID вместо названий образов.

history

Показывает своего рода историю образа. Речь идет о «слоях», то есть промежуточных вариациях образа, входящих в его состав. Команда history показывает их названия, размер и дату создания.

Синтаксис следующий: docker history [опции] название образа.

Например, чтобы отобразить слои образа testing, введем в терминал:

docker image history testing

inspect (для образа)

Отображает подробную информацию из Docker после обращения к конкретному образу.

Синтаксис следующий: docker inspect [опции] название или ID контейнера [название контейнера или образа].

По умолчанию отображает данные в формате JSON. Можно использовать дополнительные опции –format для смены формата данных. Опция -s показывает размер инспектируемых элементов.

docker inspect –format=‘{{.Config.Image}}’ $INSTANCE_ID — пример вывода информации о названии образа

docker inspect –format=‘{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}’ $INSTANCE_ID — пример вывода информации об IP-адресе

rm

Команда удаления одного или нескольких образов Docker, найденных на диске вашего хостинга.

Синтаксис следующий: docker rm [опции] название и путь до образа.

Чтобы удалить образ testing из системы, нужно ввести:

docker rm moy_repositoriy/testing:host

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

Чтобы удалить все локальные образы, обнаруженные в системе, введем в терминал:

docker image rm $(docker images -a -q)

images

Команда показывает все образы Docker, которые расположены на жестком диске вашего сервера (или локально).

REPOSITORY — это репозитория, в котором хранится образ. TAG — привязанный к нему тег (прописывается в конце команды после двоеточия. IMAGE ID — код образа, используемый вместо имени. CREATED — срок жизни. Показывает, как давно был создан образ. SIZE — пространство, которое образ занимает на диске.

Прочие команды

Это общие операции, не привязанные к работе с конкретными сущностями типа образов и контейнеров. Но они тоже пригодятся при использовании Docker.

  • docker version — показывает техническую информацию о самом Docker. Как о клиенте, так и о сервере.
  • docker login — авторизует пользователя в реестре Docker.
  • docker system prune — выполняет некую чистку, удалив из системы контейнеры, которые уже не используются, ненужные сети и образы без имен и меток.

version

К этой команде можно обратиться за подробной информацией о самом Docker. Она отобразит версию клиента и сервера Docker.

login

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

system prune

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

Допустим, чтобы стереть из Docker все образы и сверху зацепить еще тома, то надо ввести в терминал:

docker system prune –all –volumes