Visitors have accessed this post 17717 times.

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

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

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

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

Как получить список заданий Cron в Linux
array(1) { [0]=> object(WP_Term)#11557 (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

Перевод статьи - https://linoxide.com/linux-how-to/how-to-list-cron-jobs-in-linux/

Для того чтобы Linux автоматически выполнял задачи по расписанию, которые в противном случае вам пришлось бы выполнять самостоятельно, например, запуск скриптов и выполнение определенных команд, мы используем инструмент под названием cron. В системах Linux...

7
0
25 сентября 2020
Зачем нужны системы оркестрации?
array(1) { [0]=> object(WP_Term)#976 (16) { ["term_id"]=> int(10) ["name"]=> string(10) "Kubernetes" ["slug"]=> string(10) "kubernetes" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(10) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(4) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(10) ["category_count"]=> int(4) ["category_description"]=> string(0) "" ["cat_name"]=> string(10) "Kubernetes" ["category_nicename"]=> string(10) "kubernetes" ["category_parent"]=> int(0) } } Kubernetes

Автор - Андрей Трошин
Понятие оркестрации
Оркестрация или оркестровка - если обратиться к wiki - это автоматическое размещение, координация и управление сложными компьютерными системами и службами. Давайте попробуем упростить и провести аналогию с обычным музыкальным оркестром. Оркестр - это такая штука, которая позволяет сыграть грандиозное...

8
0
16 октября 2020
Какая операционная система лучше всего подойдет для работы DevOps?
array(1) { [0]=> object(WP_Term)#11557 (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

Перевод статьи — https://devops.com/which-desktop-os-is-best-for-devops/

Какую операционную систему лучше использовать инженерам DevOps?

Это вопрос, на который нет однозначного ответа. Разговоры о том, какая ОС «лучше», всегда противоречивы.Я не собираюсь отдавать предпочтение одной операционной системе, когда мы говорим о работе DevOps. Но...

4
4
25 декабря 2020