Команды Docker

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

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

Что такое команды Docker?

Чтобы лучше понять, что такое команды Docker и как они работают, давайте рассмотрим структуру Docker. Установка Docker на локальном хосте содержит движок Docker Engine в качестве своего ядра. Движок Docker состоит из трех основных компонентов:

  1. Демон Docker, который запускается на хосте под именем dockerd.
  2. API Docker, предоставляемый демоном Docker. Доступ к демону Docker и управление им осуществляется через API.
  3. Интерфейс командной строки («CLI»), который используется как команда docker для связи с API Docker.

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

Совет

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

Как устроены команды Docker?

Существует два типа команд Docker, которые уже устоялись.

С одной стороны, существуют автономные команды. Обычно они имеют форму глаголов, которые выполняют определенное действие. Известными примерами являются «docker pull» и «docker build». По мере расширения платформы и добавления новых функциональных возможностей становилось все труднее находить подходящие глаголы.

Так называемые «команды управления Docker» были введены для группировки команд и восстановления порядка в многообразии команд. Команды управления Docker обычно являются существительными. Известными примерами являются «docker image» и «docker container». Команды управления Docker группируют глаголы как подкоманды.

Таким образом, одни и те же глаголы могут использоваться в разных контекстах. Например, команда «docker image rm» используется для удаления образа, а «docker container rm» — для удаления контейнера.

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

Давайте рассмотрим общую структуру команды Docker в командной строке. В простейшем случае вызывается только Docker CLI с добавлением опции:

docker [--options]

Известными примерами являются вывод версии Docker или справочной информации Docker:

# Output Docker version
docker –version
# View Docker Help
docker --help
Совет

Добавьте опцию «—help» к подкоманде Docker, чтобы вывести справочную информацию команды.

В большинстве случаев мы не просто вызываем Docker CLI, а передаем имя конкретной команды. Это может быть отдельная команда или команда управления, за которой следует подкоманда. Давайте сначала рассмотрим общий шаблон автономной команды Docker. За именем «docker» следует имя команды, необязательные параметры и имя объекта Docker, если применимо:

docker <command> [--options] <object>

Для отображения информации о состоянии используются две знакомые по производственному использованию автономные команды Docker:

# View Docker information
docker info
# View Docker images on host 
docker images

Далее давайте познакомимся с командами управления Docker. Как упоминалось ранее, они используются для наведения порядка в органично растущем диапазоне команд. Например, изначально существовала команда «docker ls» для перечисления контейнеров на хосте и, аналогично, команда «docker images» для перечисления образов. Не совсем интуитивно понятно. Несмотря на то, что обе команды по-прежнему могут использоваться, теперь существуют более последовательные альтернативы «docker container ls» и «docker image ls».

Общая схема команд управления Docker основана на хорошо известной структуре автономных команд Docker. За именем «docker» следует имя управляющей команды вместе с ее подкомандой. В конце снова указываются необязательные параметры и имя объекта Docker, если это необходимо:

docker <management-command> <subcommand> [--options] <object>

Давайте рассмотрим этот паттерн на более конкретном примере. Вот команда Docker для запуска нового контейнера из образа «httpd» в интерактивном режиме:

docker container run -it httpd

Давайте сравним общую структуру команд управления Docker с отдельными компонентами предыдущего примера:

  Docker CLI Команда Docker Опции Объект
Структура docker <команда> <подкоманда> [—options] <объект>
Пример docker запуск контейнера -it httpd
Подробности Вызывает Docker и передает дополнительные команды и опции. Имена команд должны быть написаны точно так, как указано в документации. Опции передаются команде и управляют ее поведением. Существует два обозначения для опций, см. ниже. Место для объекта в качестве цели операции. Для объектов Docker, таких как контейнеры и образы, ID — это имя или хэш объекта.

Какие опции принимают команды Docker?

Как и большинство команд командной строки, команды Docker при вызове управляются необязательными параметрами, называемыми «опциями». Опции следуют за именем команды. Они чувствительны к регистру. Обычно для большинства опций существует два обозначения:

  1. Краткая форма: -, например, «docker -v».

Короткая форма не имеет особого смысла. Вместо этого несколько опций могут быть объединены в одну, например, «docker run -it» вместо «docker -i -t». Порядок следования произвольный, поэтому вы также можете написать «docker run -ti». Короткая форма хорошо подходит для быстрой работы с известными командами в командной строке.

  1. Длинная форма: —<имя опции>, например, «docker -version».

Длинная форма проста для понимания, но требует больше времени для ввода и занимает больше места. Длинная форма хорошо подходит для создания скриптов; осмысленные имена опций служат для целей документирования.

Как связаны между собой Dockerfile, Docker image и Docker container?

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

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

Команда Docker Значение Аналогия с курицей и яйцом
docker build Создание образа Docker из Dockerfile Яйцо с генетической информацией
docker run <image> Запуск контейнера Docker из образа Цыпленок вылупляется из яйца
docker commit <container> Создание образа Docker из контейнера Курица откладывает новое яйцо

Обзор наиболее важных команд Docker

За последние десять лет Docker стремительно развивался. В дополнение к первоначальной виртуализации контейнеров, Docker теперь включает функции, которые выходят далеко за эти рамки. Например, Docker-Compose и Docker-Swarm могут использоваться для оркестровки контейнерных федераций, что традиционно было зарезервировано для альтернатив Docker. Ниже мы рассмотрим подмножество исходных команд. Полный перечень выходит за рамки данной статьи.

Контейнер Docker включает в себя следующие компоненты. Соответствующие команды доступны для управления:

  1. Операционная система контейнера и файловая система объединения
  2. Программные компоненты и конфигурация
  3. Переменные окружения и конфигурация времени выполнения
  4. Порты и тома
  5. Процессы и журналы

Какие существуют автономные команды Docker?

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

Автономные команды Docker Эквивалентная команда управления Docker Объяснение
docker ps docker container ls Отображение контейнеров, запущенных на хосте
образы docker docker image ls Отображение образов, доступных на хосте
docker inspect <object> docker <object-type> inspect <object>, например, docker image inspect <image> Просмотр информации об объектах Docker, таких как образы, контейнеры, тома и т.д.

Однако существует еще несколько самостоятельных команд Docker. Их нельзя заменить командами Docker Management, поскольку они относятся к установке Docker в целом:

Автономная команда Docker Объяснение
docker —help Просмотр справки для Docker CLI
docker —version Просмотр версии установки Docker
docker info Просмотр общесистемной информации об установке Docker
docker login Вход в реестр контейнеров или облачный бэкэнд
docker logout Выход из реестра контейнеров или облачного бэкенда.

Какие существуют команды для контейнеров Docker?

В отличие от виртуализации с помощью виртуальных машин, контейнер Docker не содержит собственной операционной системы. Вместо этого все контейнеры, запущенные на хосте Docker, имеют доступ к одному и тому же ядру операционной системы. При запуске каждому контейнеру по команде выделяется определенное количество системных ресурсов. К ним относятся память, ядра процессора, накопители и (виртуальные) сетевые устройства. Вот два примера:

Назначить ядро процессора и 10 мегабайт памяти контейнерам Docker при запуске:

docker container run --cpus="1" --memory="10m" <image>

Сопоставить TCP-порт 80 хоста Docker с портом 80 контейнера Docker:

docker container run -p 80:80/tcp <image>

Контейнеры можно запускать, останавливать и удалять на хосте. Более того, процессы, запущенные внутри контейнера, можно контролировать. Соответственно, многие команды контейнера Docker решают эти задачи:

Команда контейнера Docker Объяснение
docker container ls Показать контейнеры, запущенные на хосте
docker container stats Отображение информации о состоянии запущенных контейнеров
docker container run <image> Запуск нового контейнера из указанного образа или выполнение команды в новом контейнере
docker container commit <container> Создание нового образа из изменений запущенного контейнера
docker container attach <container> Предоставление запущенному контейнеру локальных стандартных потоков ввода, вывода и ошибок
docker container logs <container> Отображение журнальной информации контейнера
docker container inspect <container> Отображение подробной информации о контейнере
docker container update <container> Обновление конфигурации контейнера
docker container rename <container> <new-name> Переименовать контейнер
docker container port <container> Показать назначение портов контейнера
docker container pause <container> Приостановить активные процессы в контейнере
docker container unpause <container> Возобновление выполнения приостановленных процессов в контейнере
docker container exec <container> <command> Выполнение команды внутри запущенного контейнера
docker container stop <container> Остановить выполнение контейнера
docker container start <container> Возобновить выполнение остановленного контейнера
docker container restart <container> Перезапуск контейнера; ведет себя как docker container stop <container> и docker container start <container>.
docker container top <container> Вывести список процессов, запущенных в контейнере
docker container kill <container> Убить запущенный контейнер
docker container rm <container> Удалить контейнер из системы
docker container prune Удалить все остановленные контейнеры из системы
docker container cp <container>:<source-path> <dest-path> Копирование файлов и папок между контейнером и локальной файловой системой.
docker container diff <container> Отображение изменений в файловой системе контейнера
docker container export <container> Вывести файловую систему контейнера в виде архива tarball; все слои будут сведены к одному.

Какие существуют команды для работы с образами Docker?

В отличие от образов виртуальных машин, образ Docker — это не один файл в его нормальном состоянии. Вместо этого он представляет собой композит из нескольких компонентов:

  • Слои образа: содержат данные, добавленные в результате работы с файловой системой. Слои накладываются друг на друга и сводятся к единому уровню с помощью объединенной файловой системы.
  • Родительский образ: обеспечивает основные функции образа и закрепляет образ в корневом дереве экосистемы Docker.
  • Манифест образа: описывает композит и идентифицирует содержащиеся в нем слои образа.

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

Команда образа Docker Объяснение
docker image build Создать образ Docker из Dockerfile
docker image history <image> Просмотр шагов по созданию образа Docker
docker image import <tarball> Создание образа Docker из архива «tarball»
docker image inspect <image> Просмотр подробной информации об образе Docker
docker image load Загрузка архива образов, созданного с помощью команды «docker image save»
docker image ls Вывести список образов, доступных на хосте Docker
docker image prune Удалить неиспользуемые образы Docker с хоста Docker
docker image pull <image> Получение образа Docker из реестра
docker image push <image> Отправить образ в реестр
docker image rm <image> Удаление образа с локального хоста
docker image save <image> Создание архива изображений со всеми слоями из одного изображения
docker image tag <source-image> <target-image> Пометить изображение

Что такое команды Docker Volume?

Контейнер Docker содержит изолированное приложение. Однако во многих случаях полезно обмениваться файлами между контейнером и хост-системой. Для этой цели Docker распознает различные типы томов. Различия между томами очень тонкие; выбор подходящего типа в значительной степени зависит от конкретного сценария развертывания:

  • Именованные тома — рекомендуется
  • Анонимные тома — теряются при удалении контейнера
  • Связывание монтирования — не рекомендуется; эффективен
  • Tmpfs Mounts — расположены в основной памяти; только в Linux.

Для взаимодействия с томами доступно несколько команд Docker:

Команда Docker volume Объяснение
docker volume ls Отображение томов, расположенных на хосте
docker volume prune Удалить все неиспользуемые тома с хоста
docker volume create Создать новый том на хосте
docker inspect <volume> Отображение подробной информации о томе
docker volume rm <volume> Удалить указанный том с хоста

Оцените статью
cdelat.ru
Добавить комментарий