Visitors have accessed this post 20843 times.

Команды Docker, которые вам точно пригодятся

8
2
20843
23 октября 2020 9:04
Автор: Rebrain Me
Docker

Visitors have accessed this post 20843 times.

Docker – удобный и популярный инструмент контейнеризации, который позволил ускорить процесс развертывания и запуска приложения и инфраструктуры для него. Этот эффект достигается за счет того, что в контейнер запаковывается образ вашего приложения, который и становится исполняемым пакетом и включает в себя все, что нужно для запуска, — начиная с кода и среды выполнения и заканчивая файлами конфигурации, библиотеками, переменными среды.

Конечно, в работе с Docker вам не обойтись без ряда команд. Остановимся на некоторых из них.

ps

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

Так как по умолчанию выводятся только запущенные контейнеры, вам может пригодиться флаг –a / —all – с его помощью можно посмотреть вообще все контейнеры.

А флаг -q / —quiet позволяет просмотреть только ID контейнеров.

pull

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

run

run — команда для запуска контейнера. При помощи параметров можно определять поведение контейнера, разрешения, сетевые настройки и т.д.

Примеры флагов для этой команды:

-d — detach – используется, если нужно запустить контейнер и оставить его работать фоном. Без него приложение останавливается при закрытии консоли, логи утилиты уходят в консоль и других операций мы выполнять в это время не можем.

-p — флагом определяется port mapping, то есть, мы определяем доступ к приложению в контейнере из хостовой системы так, словно оно запущено на самой хостовой системе.

Синтаксис флага при этом:

-p [[$HOST_LISTEN_ADDRESS:]$HOST_LISTEN_PORT:]$CONTAINER_LISTEN_PORT[/$PROTOCOL]

  • HOST_LISTEN_ADDRESS — адрес, на котором пробрасывается порт на хосте. По умолчанию это — 0.0.0.0 (запросы слушаются на всех адресах).
  • HOST_LISTEN_PORT — порт, на который пробрасывается порт на хосте. Может совпадать с портом контейнера.
  • CONTAINER_LISTEN_PORT — порт, который пробрасывается на хост.
  • PROTOCOL — протокол, который пробрасываем.

build

build  — команда собирает Docker образ из Dockerfile и контекста (набора файлов, находящихся по конкретному пути или URL). Чтобы задать имя образа, используется флаг -t.

rm

rm —  команда для удаления контейнеров, которые остановлены.

Используется с флагом -force, без него Docker укажет на необходимость остановки контейнера, и только после этого можно будет удалить его.

stop

stop —  команда для остановки контейнеров. Чтобы остановить один контейнер, нужно использовать команду в формате docker stop my_container, а чтобы применить ее для всех запущенных контейнеров, используется синтаксис вида docker stop $(docker ps -a -q).

rmi

rmi  —  команда для удаления образов.

logs

logs  —  команда для просмотра логов нужного контейнера. Флаг –follow позволяет следить за логами в процессе работы приложения.

VOLUME

VOLUME — команда определяет путь, по которому нужно подключить Volume.

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

Синтаксис команды — VOLUME PATH[ …], где PATH — это путь в контейнере, куда нужно подключить Volume.

EXPOSE

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

Синтаксис команды — EXPOSE PORT[/PROTOCOL][ …], где

  • PORT — порт приложения,
  • PROTOCOL — протокол (udp/tcp).

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

WORKDIR

WORKDIR — команда, которой можно определить директорию, которая будет рабочей внутри контейнера. Применяется, когда копируется приложение со всеми его зависимостями, а не в виде бинарного файла, и нужна команда для его запуска. А также в случае, если для запуска приложения нужно, чтобы конфигурационный файл находился в конкретной директории.

CMD

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

Синтаксис команды может быть двух видов:

  • shell — CMD command arg —запускает команду внутри контейнера в виде /bin/sh -c ‘command arg’;
  • exec — CMD [«command», «arg»] —запускает команду command arg напрямую, не создавая дополнительно оболочку.

ENTRYPOINT

ENTRYPOINT — команда, аналогичная CMD. Определяет, что именно нужно запустить при запуске контейнера.

У этой команды также есть два варианта синтаксиса:

  • shell — ENTRYPOINT command arg —запускает команду внутри контейнера в виде /bin/sh -c ‘command arg’.
  • exec — ENTRYPOINT [«command», «arg»] —запускает команду command arg напрямую, без дополнительного создания оболочки.

Отличается от CMD тем, что если ENTRYPOINT нет, то CMD запускается при старте по умолчанию. В этот момент ее можно переопределить командой docker run IMAGE_NAME COMMAND.

Если же ENTRYPOINT есть, содержание команды CMD передается в качестве параметра в ENTRYPOINT (но только при использовании синтаксиса с exec).

От редакции

Если вам интересно посещать открытые онлайн-мероприятия по DevOps, Kubernetes, Docker, GitlabCI и др. и задавать вопросы в режиме реального времени, подключайтесь к каналу DevOps by REBRAIN. *Анонсы мероприятий каждую неделю

Практикумы для специалистов по инфраструктуре и разработчиков — https://rebrainme.com.

Наш Youtube-канал — https://www.youtube.com/channel/UC6uIx64IFKMVmj12gKtSgBQ.

Агентство Fevlake, проектируем и поддерживаем IT-инфраструктуры с 2012 года — https://fevlake.com.

Комментарии (3)
Введено символов из возможных
Не отвечать
Serega Popov

Начиная с VOLUME и дальше — это команды для написания Dockerfile, а не команды консоли Docker.
Еще полезная команда консоли: create — создает контейнер, но не запускает его

encore-show

Нигде не увидел команд которые реально помогут
К примеру таких как
# docker stop $(docker ps -a -q) остановить все контейнеры
# docker rm $(docker ps -a -q) удалить все контейнеры

И т.п. Просто man docker покажет куда больше команд)

Вам также может понравится

Команды Docker, которые вам точно пригодятся
array(1) { [0]=> object(WP_Term)#11560 (16) { ["term_id"]=> int(8) ["name"]=> string(6) "Docker" ["slug"]=> string(6) "docker" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(8) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(8) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(8) ["category_count"]=> int(8) ["category_description"]=> string(0) "" ["cat_name"]=> string(6) "Docker" ["category_nicename"]=> string(6) "docker" ["category_parent"]=> int(0) } } Docker

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

8
2
23 октября 2020
Протокол SSH
array(1) { [0]=> object(WP_Term)#11560 (16) { ["term_id"]=> int(6) ["name"]=> string(5) "Linux" ["slug"]=> string(5) "linux" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(6) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(28) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(6) ["category_count"]=> int(28) ["category_description"]=> string(0) "" ["cat_name"]=> string(5) "Linux" ["category_nicename"]=> string(5) "linux" ["category_parent"]=> int(0) } } Linux

Протокол SSH (Secure SHell) - один из основных и очень важных инструментов работы с Linux (тут надо отметить, что он может использоваться и для других платформ - OpenBSD, Windows, macOS). SSH применяется для зашифрованного соединения сервера и клиента путем создания защищенного соединения на удаленном компьютере. Используется прежде всего для...

2
0
25 мая 2020
Утилита для удаленного обслуживания систем на базе ОС NixOS — nixops
array(1) { [0]=> object(WP_Term)#11555 (16) { ["term_id"]=> int(6) ["name"]=> string(5) "Linux" ["slug"]=> string(5) "linux" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(6) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(28) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(6) ["category_count"]=> int(28) ["category_description"]=> string(0) "" ["cat_name"]=> string(5) "Linux" ["category_nicename"]=> string(5) "linux" ["category_parent"]=> int(0) } } Linux

Автор - Юрий Изоркин

Сегодня давайте познакомимся с утилитой nixops для удаленного обслуживания систем на базе ОС NixOS. Также она поддерживает развертывание систем на VirtualBox VM, Amazon EC2, Google Compute Engine, Microsoft Azure, Hetzner physical machines, Digital Ocean, Libvirtd (Qemu), Datadog resources. Подробнее об этих возможностях...

1
2
18 декабря 2020