Использование командной строки Docker

Чтобы получает список доступных команд, либо запускает docker без параметров, либо выполняет docker help:

$ docker
Usage: docker [OPTIONS] COMMAND [ARG...]
       docker [ --help | -v | --version ]

A self-sufficient runtime for containers.

Options:
      --config string      Location of client config files (default "/root/.docker")
  -c, --context string     Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker context use")
  -D, --debug              Enable debug mode
      --help               Print usage
  -H, --host value         Daemon socket(s) to connect to (default [])
  -l, --log-level string   Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default "/root/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default "/root/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default "/root/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Commands:
    attach    Attach to a running container
    # […]

Описание

В зависимости от конфигурации вашей системы Docker вам может потребоваться начинать каждую команду docker с sudo . Чтобы не использовать sudo с командой docker, системный администратор может создать группу Unix с именем docker и добавить в нее пользователей.

Дополнительные сведения об установке Docker или конфигурации sudo см. в инструкциях по установке для вашей операционной системы.

Переменные среды

Следующий список переменных среды поддерживается командной строкой docker:

Переменная

Описание

DOCKER_API_VERSION

Переопределите согласованную версию API для отладки (например, 1.19)

DOCKER_CERT_PATH

Расположение ваших ключей аутентификации. Эта переменная используется как интерфейсом командной строки docker, так и демон dockerd

DOCKER_CONFIG

Расположение файлов конфигурации вашего клиента.

DOCKER_CONTENT_TRUST_SERVER

URL-адрес сервера Notary для использования. По умолчанию используется тот же URL-адрес, что и в реестре.

DOCKER_CONTENT_TRUST

При установке Docker использует нотариуса для сигнатуре и проверки образов. Соответствует --disable-content-trust=false для сборки, создания, извлечения, отправки, запуска.

DOCKER_CONTEXT

Имя используемого docker context (переопределяет DOCKER_HOST env var и контекст по умолчанию, установленный с помощью docker context use )

DOCKER_DEFAULT_PLATFORM

Платформа по умолчанию для команд с флагом --platform.

DOCKER_HIDE_LEGACY_COMMANDS

Если установлено, Docker скрывает «устаревшие» команды верхнего уровня (такие как docker rm и docker pull) в выводе docker help, и печатаются только Management commands для каждого типа объекта (например, docker container). Это может стать значением по умолчанию в будущем выпуске, после чего эта переменная среды будет удалена.

DOCKER_HOST

Сокет демона для подключения.

DOCKER_STACK_ORCHESTRATOR

Настраивает оркестратор по умолчанию для использования при использовании команд управления docker stack.

DOCKER_TLS_VERIFY

Когда установлено, Docker использует TLS и проверяет удаленный. Эта переменная используется как интерфейсом командной строки docker, так и демон dockerd

BUILDKIT_PROGRESS

Устанавливает тип вывода прогресса ( auto , plain , tty ), когда здание с Серверная часть BuildKit . Используйте обычный, чтобы показывает вывод контейнера (по умолчанию auto).

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

  • HTTP_PROXY

  • HTTPS_PROXY

  • NO_PROXY

Данные переменные среды Go нечувствительны к регистру. Подробнее об данных переменных см. в Спецификация Go.

Файлы конфигурации

По умолчанию командная строка Docker хранит свои файлы конфигурации в каталоге с именем .docker в вашем каталоге $HOME.

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

Вы можете изменяет поведение команды docker, используя переменные среды или параметры командной строки. Вы также можете использовать параметры в config.json, чтобы изменяет некоторые из них. Если установлены переменная среды и флаг --config, флаг имеет приоритет над переменной среды. Параметры командной строки переопределяют переменные среды, а переменные среды переопределяют свойства, указанные в файле config.json.

Изменяет

Чтобы указывает другой каталог, используйте переменную среды DOCKER_CONFIG или параметр командной строки --config. Если указаны оба параметра, параметр --config переопределяет переменную среды DOCKER_CONFIG. В приведённом далее примере команда docker ps переопределяется с использованием файла config.json, расположенного в каталоге ~/testconfigs/.

$ docker --config ~/testconfigs/ ps

Данный флаг применяется только к любой выполняемой команде. Для постоянной конфигурации вы можете установить переменную среды DOCKER_CONFIG в своей оболочке (например, ~/.profile или ~/.bashrc). В приведённом далее примере новый каталог устанавливается как HOME/newdir/.docker.

$ echo export DOCKER_CONFIG=$HOME/newdir/.docker > ~/.profile

Файл конфигурации Docker CLI

Используйте конфигурацию интерфейса командной строки Docker для настройки параметров интерфейса командной строки docker. Файл конфигурации использует форматирование и свойства JSON:

По умолчанию файл конфигурации хранится в ~/.docker/config.json. Обратитесь к разделу изменения каталога .docker, чтобы использовать другое местоположение.

Предупреждение

Файл конфигурации и другие файлы в каталоге конфигурации ~/.docker могут содержать конфиденциальную информацию, такую как данные аутентификации для прокси-серверов или, в зависимости от вашего хранилища учетных данных, учетные данные для ваших реестров образов. Просмотрите содержимое файла конфигурации, прежде чем делиться им с другими, и не допускайте передачи файла в систему управления версиями.

Настраивает формат вывода по умолчанию для команд

Данные поля позволяют настроить формат вывода по умолчанию для некоторых команд, если не указан флаг --format.

Свойство

Описание

configFormat

Пользовательский формат по умолчанию для вывода docker config ls. Обратитесь к отформатировать раздел вывода в документации docker config ls для получения списка поддерживаемых директив форматирования.

imagesFormat

Пользовательский формат по умолчанию для вывода docker images / docker image ls. Обратитесь к отформатировать раздел вывода в документации по образам докеров для получения списка поддерживаемых директив форматирования.

nodesFormat

Пользовательский формат по умолчанию для вывода docker node ls. Обратитесь к раздел форматирования в документации docker node ls для получения списка поддерживаемых директив форматирования.

pluginsFormat

Пользовательский формат по умолчанию для вывода docker plugin ls. Обратитесь к раздел форматирования в документации плагина docker ls для получения списка поддерживаемых директив форматирования.

psFormat

Пользовательский формат по умолчанию для вывода docker ps / docker container ps. Обратитесь к раздел форматирования в документации docker ps для получения списка поддерживаемых директив форматирования.

secretFormat

Пользовательский формат по умолчанию для вывода docker secret ls. Обратитесь к отформатировать раздел вывода в документации docker secret ls для получения списка поддерживаемых директив форматирования.

serviceInspectFormat

Пользовательский формат по умолчанию для вывода docker service inspect. Обратитесь к раздел форматирования в документации службы проверки докеров для получения списка поддерживаемых директив форматирования.

servicesFormat

Пользовательский формат по умолчанию для вывода docker service ls. Обратитесь к раздел форматирования в документации службы Docker ls для получения списка поддерживаемых директив форматирования.

statsFormat

Пользовательский формат по умолчанию для вывода docker stats. Обратитесь к раздел форматирования в документации по статистике докеров для получения списка поддерживаемых директив форматирования.

Пользовательские заголовки HTTP

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

Параметры хранилища учетных данных

Свойство credsStore указывает внешний двоичный файл, который будет использоваться в качестве хранилища учетных данных по умолчанию. Когда это свойство установлено, docker login попытается сохраняет учетные данные в двоичном файле, указанном docker- credential-<value>, который виден на $PATH. Если это свойство не задано, учетные данные будут храниться в свойстве auths конфигурации. Дополнительные сведения см. в разделе Хранилище учетных данных в документации вход в docker.

Свойство credHelpers задаёт множество помощников по учетным данным, которые следует использовать предпочтительно по сравнению с credsStore или auths при хранении и извлечении учетных данных для определённых реестров. Если это свойство установлено, двоичный файл docker-credential-<value> будет использоваться при сохранении или получении учетных данных для определённого реестра. Дополнительные сведения см. в разделе Помощники по учетным данным в документации вход в docker.

Параметры Orchestrator для стеков Docker

Свойство stackOrchestrator указывает оркестратор по умолчанию, который следует использовать при выполнении команд управления docker stack. Допустимые значения: "swarm", "kubernetes" и "all". Это свойство можно переопределить с помощью переменной среды DOCKER_STACK_ORCHESTRATOR или флага --orchestrator.

Автоматическая настройка прокси для контейнеров

Свойство proxies указывает, что переменные среды прокси должны автоматически устанавливаться в контейнерах и задаваться как --build-arg для контейнеров, используемых во время docker build . Можно настроить множество прокси-серверов "default", который будет использоваться для любого демона Docker, к которому подключается клиент, или конфигурации для каждого хоста (демона Docker), например, «https://docker-daemon1.example.com». Для каждой среды можно задать следующие свойства:

Свойство

Описание

httpProxy

Значение по умолчанию HTTP_PROXY и http_proxy для контейнеров и --build-arg для docker build

httpsProxy

Значение по умолчанию HTTPS_PROXY и https_proxy для контейнеров и --build-arg для docker build

ftpProxy

Значение по умолчанию FTP_PROXY и ftp_proxy для контейнеров и --build-arg для docker build

noProxy

Значение по умолчанию NO_PROXY и no_proxy для контейнеров и --build-arg для docker build

Данные параметры используются для настройки параметров прокси-сервера только для контейнеров и не используются в качестве параметров прокси-сервера для интерфейса командной строки docker или демона dockerd. См. переменные среды и разделы HTTP/HTTPS-прокси для настройки параметров прокси для cli и демона.

Предупреждение

Настройки прокси-сервера могут содержать конфиденциальную информацию (например, если прокси-сервер требует аутентификации). Переменные среды хранятся в виде простого текста в конфигурации контейнера, и поэтому их можно проверяет через удаленный API или зафиксировать в образе при использовании docker commit .

Последовательность клавиш по умолчанию для отсоединения от контейнеров

После подключения к контейнеру пользователи отсоединяются от него и оставляют его работающим, используя последовательность клавиш CTRL-p CTRL-q. Эта последовательность клавиш отсоединения настраивается с помощью свойства detachKeys. Указывает для свойства значение <sequence>. Формат <sequence> представляет собой список разделенных запятыми либо букв [a-Z], либо ctrl- в сочетании с любым из следующего:

  • a-z (один строчный буквенный символ )

  • @ (ат символ)

  • [ (левая скобка)

  • \\ (две косые черты)

  • _ (подчеркивание)

  • ^ (каретка)

Ваша настройка применяется ко всем контейнерам, запущенным с помощью вашего клиента Docker. Пользователи могут переопределить вашу пользовательскую последовательность клавиш или последовательность клавиш по умолчанию для каждого контейнера. Для этого пользователь указывает флаг --detach-keys с помощью команды docker attach, docker exec, docker run или docker start.

Параметры плагина CLI

Свойство plugins содержит настройки, специфичные для подключаемых модулей CLI. Ключ — это имя плагина, а значение — дополнительная карта опций, специфичных для этого плагина.

Пример файла конфигурации

Далее приведён пример файла config.json, иллюстрирующий формат, используемый для различных полей:

{
  "HttpHeaders": {
    "MyHeader": "MyValue"
  },
  "psFormat": "table {{.ID}}\\t{{.Image}}\\t{{.Command}}\\t{{.Labels}}",
  "imagesFormat": "table {{.ID}}\\t{{.Repository}}\\t{{.Tag}}\\t{{.CreatedAt}}",
  "pluginsFormat": "table {{.ID}}\t{{.Name}}\t{{.Enabled}}",
  "statsFormat": "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}",
  "servicesFormat": "table {{.ID}}\t{{.Name}}\t{{.Mode}}",
  "secretFormat": "table {{.ID}}\t{{.Name}}\t{{.CreatedAt}}\t{{.UpdatedAt}}",
  "configFormat": "table {{.ID}}\t{{.Name}}\t{{.CreatedAt}}\t{{.UpdatedAt}}",
  "serviceInspectFormat": "pretty",
  "nodesFormat": "table {{.ID}}\t{{.Hostname}}\t{{.Availability}}",
  "detachKeys": "ctrl-e,e",
  "credsStore": "secretservice",
  "credHelpers": {
    "awesomereg.example.org": "hip-star",
    "unicorn.example.com": "vcbait"
  },
  "stackOrchestrator": "kubernetes",
  "plugins": {
    "plugin1": {
      "option": "value"
    },
    "plugin2": {
      "anotheroption": "anothervalue",
      "athirdoption": "athirdvalue"
    }
  },
  "proxies": {
    "default": {
      "httpProxy":  "http://user:[email protected]:3128",
      "httpsProxy": "https://my-proxy.example.com:3129",
      "noProxy":    "intra.mycorp.example.com",
      "ftpProxy":   "http://user:[email protected]:3128"
    },
    "https://manager1.mycorp.example.com:2377": {
      "httpProxy":  "http://user:[email protected]:3128",
      "httpsProxy": "https://my-proxy.example.com:3129"
    }
  }
}

Экспериментальные особенности

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

Начиная с Docker 20.10, экспериментальные функции интерфейса командной строки включены по умолчанию и не требуют настройки для их включения.

Notary

Если вы используете собственный нотариальный сервер и самозаверяющий сертификат или внутренний центр сертификации, вам необходимо разместить сертификат по адресу tls/<registry_url>/ca.crt в каталоге конфигурации Docker.

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

Примеры

Показывает текст справки

Чтобы просмотреть справку по любой команде, просто выполняет команду, а затем параметр --help.

$ docker run --help

Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Run a command in a new container

Options:
      --add-host value             Add a custom host-to-IP mapping (host:ip) (default [])
  -a, --attach value               Attach to STDIN, STDOUT or STDERR (default [])
<...>

Типы опционов

Односимвольные параметры командной строки можно комбинировать, поэтому вместо ввода docker run -i -t --name test busybox sh вы можете написать docker run -it --name test busybox sh.

Логический

Булевы параметры имеют вид -d=false. Значение, которое вы видите в тексте справки, является значением по умолчанию, которое устанавливается, если вы не указываете данный флаг. Если вы укажете логический флаг без значения, флаг будет установлен на true независимо от значения по умолчанию.

Например, запуск docker run -d установит значение true , поэтому ваш контейнер будет работать в «отключенном» режиме в фоновом режиме.

Параметры, которые по умолчанию имеют значение true (например, docker build --rm=true ), могут быть установлены на значения, отличные от значений по умолчанию, только путём явного задания для них значения false :

$ docker build --rm=false .

Мульти

Вы можете указывает такие параметры, как -a=[], несколько раз в одной командной строке, например, в данных командах:

$ docker run -a stdin -a stdout -i -t ubuntu /bin/bash

$ docker run -a stdin -a stdout -a stderr ubuntu /bin/ls

Иногда для нескольких опций может потребоваться более сложная строка значений, например -v:

$ docker run -v /host:/container example/mysql

Примечание

Не используйте параметры -t и -a stderr вместе из-за ограничений реализации pty. Все stderr в режиме pty просто переходят в stdout.

Строки и целые числа

Такие параметры, как --name="", предполагают строку, и их можно указывает только один раз. Такие параметры, как -c=0, предполагают целое число, и их можно указывает только один раз.