Visitors have accessed this post 11301 times.

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

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

Visitors have accessed this post 11301 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 покажет куда больше команд)

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

Устанавливаем Mastodon
array(1) { [0]=> object(WP_Term)#11570 (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

Автор — Юрий Изоркин
Что такое Mastodon, и зачем он нужен
Mastodon — некоммерческая децентрализованная социальная сеть, которая предоставляет функции микроблоггинга, наподобие Twitter. Краткие сообщения, которые публикуют пользователи, здесь называются «гудками» (англ toots). Ограничением является длина поста в 500 символов, но мне хотелось бы,...

1
0
19 марта 2021
Методология и принципы DevOps
array(1) { [0]=> object(WP_Term)#976 (16) { ["term_id"]=> int(7) ["name"]=> string(6) "DevOps" ["slug"]=> string(6) "devops" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(7) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(19) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(7) ["category_count"]=> int(19) ["category_description"]=> string(0) "" ["cat_name"]=> string(6) "DevOps" ["category_nicename"]=> string(6) "devops" ["category_parent"]=> int(0) } } DevOps

«Когда ты это выяснишь, юный Билл, ты сможешь осознать Три Пути, – говорит он. – Первый Путь помогает нам понять, как наладить быстрый поток работы, соединяющий отдел разработки и IT-сопровождения, потому что именно он лежит между бизнесом и клиентами. Второй Путь показывает нам, как сократить и усилить цикл обратной связи, чтобы можно было сразу...

9
0
4 сентября 2020
Как посмотреть открытые порты Linux
array(1) { [0]=> object(WP_Term)#11570 (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

Во время устранения неполадок служб, работающих на ОС Linux, просмотр открытых портов является одной из задач, которую должен выполнять любой пользователь или администратор. Если служба должна по идее работать, но по какой-то причине она не работает, то, скорее всего, порт этой службы закрыт и его нужно открыть.

В этом туториале мы покажем, как...

6
0
28 мая 2020