Visitors have accessed this post 3682 times.

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

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

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

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

Туториал по DevOps для начинающих
array(1) { [0]=> object(WP_Term)#11771 (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://www.guru99.com/devops-tutorial.html
Что такое DevOps?
DevOps — это культура, которая способствует развитию сотрудничества между командой разработчиков и операционным отделом для более быстрого и автоматизированного развертывания кода в производстве. Слово «DevOps» представляет собой сочетание двух слов «разработка»...

5
0
22 января 2021
Как мы боролись со спамом — чтобы быстро и бесплатно. И забороли
array(1) { [0]=> object(WP_Term)#976 (16) { ["term_id"]=> int(1) ["name"]=> string(7) "Default" ["slug"]=> string(7) "default" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(1) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(1) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(1) ["category_count"]=> int(1) ["category_description"]=> string(0) "" ["cat_name"]=> string(7) "Default" ["category_nicename"]=> string(7) "default" ["category_parent"]=> int(0) } } Default

Автор - Сергей Попов

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

Слово «спам» имеет интересное происхождение. После Второй мировой войны в США оказалось слишком много мясных консервов от фирмы-производителя SPAM. И для...

18
0
7 декабря 2020
Что должен уметь Linux-администратор
array(1) { [0]=> object(WP_Term)#11771 (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 - это та операционная система, с которой вы точно будете работать в любой современной IT-компании. Знание ее изнутри, навык работы с ней при помощи разных инструментов - это тот фундамент, который поможет вам в дальнейшем развиваться в любом направлении IT.

Давайте посмотрим, какие шаги проходит в своей работе, что должен знать...

25
1
6 ноября 2020