Spec-Zone.ru › Ansible 2.11

community.docker.docker_container – управление контейнерами Docker

Примечание

Этот плагин входит в состав коллекции community.docker (версия 1.2.2).

Для его установки используйте: ansible-galaxy collection install community.docker.

Для использования в плейбуке укажите: community.docker.docker_container.

  • Обзор
  • Требования
  • Параметры
  • Примечания
  • Примеры
  • Возвращаемые значения

Обзор

  • Управление жизненным циклом контейнеров Docker.
  • Поддерживает режим проверки. Запустите с --check и --diff для просмотра различий в конфигурации и списка действий, которые будут выполнены.

Требования

Ниже перечислены требования, необходимые на хосте, на котором выполняется этот модуль.

  • API Docker >= 1.20
  • Docker SDK для Python: Обратите внимание, что модуль Python docker-py был заменён на docker (см. здесь для получения подробностей). Для Python 2.6 необходимо использовать docker-py. В противном случае рекомендуется установить модуль Python docker. Обратите внимание, что оба модуля не должны устанавливаться одновременно. Также обратите внимание, что при установке и удалении одного из этих модулей другой может перестать работать, и потребуется его повторная установка.
  • Docker SDK для Python >= 1.8.0 (для Python 2.6 используйте docker-py)

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
api_version
строка
Значение по умолчанию:
"auto"
Версия Docker API, работающая на Docker хосте.
По умолчанию используется последняя версия API, поддерживаемая Docker SDK для Python и демоном docker.
Если значение не указано в задаче, будет использовано значение переменной окружения DOCKER_API_VERSION. Если переменная окружения не задана, будет использовано значение по умолчанию.

Псевдонимы: docker_api_version
auto_remove
булево
    Варианты:
  • нет
  • да
Включить автоматическое удаление контейнера на стороне демона, когда процесс контейнера завершается.
Если container_default_behavior установлен на compatiblity (значение по умолчанию), этот параметр имеет значение по умолчанию no.
blkio_weight
целое число
Вес ввода-вывода блочных устройств (относительный), от 10 до 1000.
ca_cert
путь
Использование сертификата УЦ при проверке сервера, указав путь к файлу сертификата УЦ.
Если значение не указано в задаче и переменная окружения DOCKER_CERT_PATH установлена, будет использован файл ca.pem из каталога, указанного в переменной окружения DOCKER_CERT_PATH.

Псевдонимы: tls_ca_cert, cacert_path
cap_drop
список / элементы=строка
Список возможностей для удаления из контейнера.
capabilities
список / элементы=строка
Список возможностей для добавления в контейнер.
cgroup_parent
строка
добавлен в 1.1.0 community.docker
Укажите родительский cgroup для контейнера.
cleanup
булево
    Варианты:
  • нет ←
  • да
Используется с detach=false для удаления контейнера после успешного выполнения.
client_cert
путь
Путь к файлу TLS-сертификата клиента.
Если значение не указано в задаче и переменная окружения DOCKER_CERT_PATH установлена, будет использован файл cert.pem из каталога, указанного в переменной окружения DOCKER_CERT_PATH.

Псевдонимы: tls_client_cert, cert_path
client_key
путь
Путь к файлу TLS-ключа клиента.
Если значение не указано в задаче и переменная окружения DOCKER_CERT_PATH установлена, будет использован файл key.pem из каталога, указанного в переменной окружения DOCKER_CERT_PATH.

Псевдонимы: tls_client_key, key_path
command
сырой
Команда для выполнения при запуске контейнера. Команда может быть строкой или списком.
До версии 2.4 строки разделялись запятыми.
comparisons
словарь
Позволяет указать, как сравнивать свойства существующих контейнеров с параметрами модуля, чтобы определить, нужно ли пересоздать/обновить контейнер или нет.
Можно указать только параметры, соответствующие состоянию контейнера, обрабатываемому демоном Docker, а также networks.
Должен быть словарь, указывающий для параметра одно из ключей strict, ignore и allow_more_present.
Если strict указан, значения сравниваются на равенство, а изменения всегда приводят к обновлению или перезапуску. Если ignore указан, изменения игнорируются.
allow_more_present разрешен только для списков, множеств и словарей. Если он указан для списков или множеств, контейнер будет обновлён или перезапущен только если параметр модуля содержит значение, отсутствующее в параметрах контейнера. Если параметр указан для словаря, контейнер будет обновлён или перезапущен только если параметр модуля содержит ключ, отсутствующий в параметрах контейнера, или если значение существующего ключа отличается.
Джойл-опция * может использоваться для установки одного из значений по умолчанию strict или ignore для *всех* сравнений, которые не явно не установлены в другие значения.
Подробности см. в примерах.
container_default_behavior
строка
    Варианты:
  • совместимость
  • no_defaults
Различные параметры модуля, используемые для задания значений по умолчанию. Это вызывает проблемы с контейнерами, использующими разные значения для этих параметров.
Значение по умолчанию — compatibility, что гарантирует использование значений по умолчанию, если они не указаны пользователем.
Начиная с community.docker 2.0.0, значение по умолчанию изменится на no_defaults. Чтобы избежать предупреждений о устаревании, задайте container_default_behavior явно.
Это влияет на параметры auto_remove, detach, init, interactive, memory, paused, privileged, read_only и tty.
cpu_period
целое число
Ограничение периода CPU CFS (Completely Fair Scheduler).
См. cpus для более удобной альтернативы.
cpu_quota
целое число
Ограничение квоты CPU CFS (Completely Fair Scheduler).
См. cpus для более удобной альтернативы.
cpu_shares
целое число
Доли CPU (относительный вес).
cpus
вещественное число
Укажите, сколько доступных ресурсов процессора может использовать контейнер.
Значение 1.5 означает, что будет использоваться не более полутора процессорных ядер.
cpuset_cpus
строка
Процессоры, на которых разрешено выполнение 1,3 или 1-3.
cpuset_mems
строка
Узлы памяти (MEM), на которых разрешено выполнение 0-3 или 0,1.
debug
булево
    Варианты:
  • нет ←
  • да
Режим отладки
default_host_ip
строка
добавлен в 1.2.0 community.docker
Определите IP-адрес хоста по умолчанию.
Должен быть пустой строкой, IPv4-адресом или IPv6-адресом.
В Docker 20.10.2 или более поздних версиях, это должно быть пустая строка (""), чтобы избежать привязки портов без явного IP-адреса только к IPv4. Подробности см. в https://github.com/ansible-collections/community.docker/issues/70.
По умолчанию модуль попытается автоматически определить это значение из сетевого подключения bridge параметр com.docker.network.bridge.host_binding_ipv4. Если не удаётся автоматически определить, то используется 0.0.0.0.
detach
булево
    Варианты:
  • нет
  • да
Включить режим открепления, чтобы оставить контейнер работающим в фоновом режиме.
Если отключено, задача отобразит статус выполнения контейнера (неудачно, если команда завершилась ошибкой).
Если container_default_behavior установлен на compatiblity (значение по умолчанию), этот параметр имеет значение по умолчанию yes.
device_read_bps
список / элементы=словарь
Список путей к устройствам и скорости чтения (байт в секунду) с устройства.
path
строка / обязательно
Путь к устройству в контейнере.
rate
строка / обязательно
Предел скорости чтения устройства в формате <number>[<unit>].
Число — положительное целое число. Единица измерения может быть одной из B (байт), K (килобайт, 1024Б), M (мегабайт), G (гигабайт), T (терабойт) или P (петабайт).
Опуская единицу измерения, по умолчанию используются байты.
device_read_iops
список / элементы=словарь
Список устройств и скорости чтения (ввода-вывода в секунду) с устройства.
path
строка / обязательно
Путь к устройству в контейнере.
rate
целое число / обязательно
Предел скорости чтения устройства.
Должно быть положительным целым числом.
device_requests
список / элементы=словарь
добавлен в 0.1.0 community.docker
Позволяет запрашивать дополнительные ресурсы, такие как графические процессоры.
capabilities
список / элементы=список
Список списков строк для запроса возможностей.
Элементы верхнего уровня списка комбинируются с помощью ИЛИ, а для каждого элемента списка, элементы внутри него комбинируются с помощью И.
Драйвер пытается удовлетворить один из подсписков.
Доступные возможности для драйвера nvidia можно найти по адресу https://github.com/NVIDIA/nvidia-container-runtime.
END_OF_DOCUMENT_MARKER
count
целое число
Количество устройств для запроса.
Установите значение -1, чтобы запросить все доступные устройства.
device_ids
список / элементы=строка
Список идентификаторов устройств.
driver
строка
Используемый драйвер для этого устройства.
options
словарь
Параметры, специфичные для драйвера.
device_write_bps
список / элементы=словарь
Список устройств и скорости записи (байты в секунду) на устройство.
path
строка / обязательно
Путь к устройству в контейнере.
rate
строка / обязательно
Предел чтения устройства в формате <number>[<unit>].
Число — положительное целое. Единица измерения может быть одной из B (байт), K (кибибайт, 1024Б), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт).
Опускание единицы измерения по умолчанию устанавливает байты.
device_write_iops
список / элементы=словарь
Список устройств и скорости записи (ввода-вывода в секунду) на устройство.
path
строка / обязательно
Путь к устройству в контейнере.
rate
целое число / обязательно
Предел чтения устройства.
Должно быть положительным целым числом.
devices
список / элементы=строка
Список привязок устройств хоста для добавления в контейнер.
Каждая привязка — это отображение, выраженное в формате <path_on_host>:<path_in_container>:<cgroup_permissions>.
dns_opts
список / элементы=строка
Список параметров DNS.
dns_search_domains
список / элементы=строка
Список пользовательских доменных имен поиска DNS.
dns_servers
список / элементы=строка
Список пользовательских DNS-серверов.
docker_host
строка
По умолчанию:
"unix://var/run/docker.sock"
URL или путь к сокету Unix для подключения к API Docker. Для подключения к удаленному хосту укажите строку подключения по протоколу TCP. Например, tcp://192.0.2.23:2376. Если для шифрования подключения используется TLS, модуль автоматически заменит tcp в URL подключения на https.
Если значение не указано в задаче, будет использовано значение переменной окружения DOCKER_HOST. Если переменная окружения не задана, используется значение по умолчанию.

псевдонимы: docker_url
domainname
строка
Доменное имя контейнера.
entrypoint
список / элементы=строка
Команда, которая перезаписывает по умолчанию ENTRYPOINT изображения.
env
словарь
Словарь пар ключ-значение.
Значения, которые могут быть интерпретированы как числа, булевы значения или другие типы данным анализатором YAML, должны быть заключены в кавычки (например, "true") для предотвращения потери данных.
env_file
путь
Путь к файлу на целевом объекте, содержащему переменные окружения FOO=BAR.
Если переменная также присутствует в env, значение env будет переопределено.
etc_hosts
словарь
Словарь сопоставлений хост-IP, где имя каждого хоста является ключом в словаре. Каждое имя хоста будет добавлено в файл /etc/hosts контейнера.
exposed_ports
список / элементы=строка
Список дополнительных портов контейнера, который информирует Docker о том, что контейнер прослушивает указанные сетевые порты во время выполнения.
Если порт уже экспонирован с помощью EXPOSE в Dockerfile, его не нужно экспонировать повторно.

псевдонимы: exposed, expose
force_kill
булево
    Варианты:
  • нет ←
  • да
Использовать команду kill при остановке работающего контейнера.

псевдонимы: forcekill
groups
список / элементы=строка
Список дополнительных имен и/или идентификаторов групп, от имени которых будет работать процесс контейнера.
healthcheck
словарь
Настройка проверки, которая выполняется, чтобы определить, являются ли контейнеры для данной службы «здоровыми».
См. документацию по инструкции Dockerfile HEALTHCHECK для получения подробной информации о работе проверок состояния.
interval, timeout и start_period задаются как продолжительности. Они принимают продолжительность в виде строки в формате, похожем на: 5h34m56s, 1m30s и т. д. Поддерживаемые единицы измерения: us, ms, s, m и h.
interval
строка
Время между выполнением проверки.
Значение по умолчанию, используемое демоном Docker, — 30s.
retries
целое число
Количество последовательных ошибок, необходимых для признания состояния «неисправным».
Значение по умолчанию, используемое демоном Docker, — 3.
start_period
строка
Начальный период для инициализации контейнера перед запуском отсчета попыток проверки состояния.
Значение по умолчанию, используемое демоном Docker, — 0s.
test
сырые данные
Команда для проверки состояния.
Должна быть строкой или списком. Если это список, первый элемент должен быть одним из NONE, CMD или CMD-SHELL.
timeout
строка
Максимальное время выполнения одной проверки.
Значение по умолчанию, используемое демоном Docker, — 30s.
hostname
строка
Имя хоста контейнера.
ignore_image
булево
    Варианты:
  • нет ←
  • да
Когда state — present или started, модуль сравнивает конфигурацию существующего контейнера с запрошенной конфигурацией. Оценка включает версию изображения. Если версия изображения в реестре не соответствует контейнеру, контейнер будет пересоздан. Вы можете остановить это поведение, установив ignore_image в True.
*Предупреждение:* Этот параметр игнорируется, если image: ignore или *: ignore указаны в параметре comparisons.
image
строка
Путь и тег репозитория, используемые для создания контейнера. Если изображение не найдено или pull равен true, изображение будет загружено из реестра. Если тег не включен, используется latest.
Также может быть идентификатором изображения. В этом случае предполагается, что изображение доступно локально. Параметр pull игнорируется в этом случае.
init
булево
    Варианты:
  • нет
  • да
Запустить init внутри контейнера, который перенаправляет сигналы и собирает процессы.
Этот параметр требует API Docker >= 1.25.
Если container_default_behavior установлен в compatiblity (значение по умолчанию), этот параметр имеет значение по умолчанию no.
interactive
булево
    Варианты:
  • нет
  • да
Поддерживать stdin открытым после запуска контейнера, даже если он не присоединён.
Если container_default_behavior установлен в compatiblity (значение по умолчанию), этот параметр имеет значение по умолчанию no.
ipc_mode
строка
Установить режим IPC для контейнера.
Может быть одним из container:<name|id> для повторного использования пространства имен IPC другого контейнера или host для использования пространства имен IPC хоста внутри контейнера.
keep_volumes
булево
    Варианты:
  • нет
  • да ←
Сохранить анонимные тома, связанные с удалённым контейнером.
kernel_memory
строка
Предел памяти ядра в формате <number>[<unit>]. Число — положительное целое. Единица измерения может быть B (байт), K (кибибайт, 1024Б), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт). Минимальное значение — 4M.
Опускание единицы измерения по умолчанию устанавливает байты.
kill_signal
строка
Переопределить стандартный сигнал, используемый для завершения работы контейнера.
labels
словарь
Словарь пар ключ-значение.
links
список / элементы=строка
Список псевдонимов имен для связанных контейнеров в формате container_name:alias.
Установка этого параметра принудительно перезапустит контейнер.
log_driver
строка
Укажите драйвер ведения журнала. Docker использует json-file по умолчанию.
См. здесь для возможных вариантов.
log_options
словарь
Словарь опций, специфичных для выбранного log_driver.
См. https://docs.docker.com/engine/admin/logging/overview/ для получения подробностей.

псевдонимы: log_opt
mac_address
строка
MAC-адрес контейнера (например, 92:d0:c6:0a:29:33).
memory
строка
Предел памяти в формате <number>[<unit>]. Число — положительное целое. Единица измерения может быть B (байт), K (кибибайт, 1024 Б), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт).
Опуская единицу измерения, по умолчанию используется байт.
Если container_default_behavior задано на compatiblity (значение по умолчанию), этот параметр имеет значение по умолчанию "0".
memory_reservation
строка
Мягкий предел памяти в формате <number>[<unit>]. Число — положительное целое. Единица измерения может быть B (байт), K (кибибайт, 1024 Б), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт).
Опуская единицу измерения, по умолчанию используется байт.
memory_swap
строка
Общий предел памяти (память + swap) в формате <number>[<unit>]. Число — положительное целое. Единица измерения может быть B (байт), K (кибибайт, 1024 Б), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт).
Опуская единицу измерения, по умолчанию используется байт.
memory_swappiness
целое число
Настройте поведение swappiness памяти контейнера. Принимает целое число от 0 до 100.
Если не задано, значение останется прежним, если контейнер существует, и будет унаследовано от хост-машины, если он будет (пере)создан.
mounts
список / элементы=словарь
Спецификация для монтирования, добавляемого в контейнер. Более мощная альтернатива volumes.
consistency
строка
    Варианты:
  • кэшированный
  • последовательный
  • по умолчанию
  • делегированный
Требование к согласованности для монтирования.
labels
словарь
Пользовательские имена и метки для тома. Действительно только для типа volume.
no_copy
булево
    Варианты:
  • нет
  • да
Ложь, если том должен быть заполнен данными из целевого объекта. Действительно только для типа volume.
Значение по умолчанию false.
propagation
строка
    Варианты:
  • частный
  • частный(чтение)
  • общий
  • общий(чтение)
  • ведомый
  • ведомый(чтение)
Режим распространения. Действительно только для типа bind.
read_only
булево
    Варианты:
  • нет
  • да
Должен ли быть монтирован том только для чтения?
source
строка
Источник монтирования (например, имя тома или путь хоста).
target
строка / обязательно
Путь внутри контейнера.
tmpfs_mode
строка
Режим разрешений для tmpfs-монтирования.
tmpfs_size
строка
Размер tmpfs-монтирования в байтах в формате <число>[<единица>].
Число — положительное целое. Единица измерения может быть B (байт), K (кибибайт, 1024 Б), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт).
Опуская единицу измерения, по умолчанию используется байт.
type
строка
    Варианты:
  • bind
  • npipe
  • tmpfs
  • том ←
Тип монтирования.
Обратите внимание, что npipe поддерживается только Docker для Windows.
volume_driver
строка
Укажите драйвер тома. Действительно только для типа volume.
См. здесь для получения подробностей.
volume_options
словарь
Словарь опций, специфичных для выбранного volume_driver. См. здесь для получения подробностей.
name
строка / обязательно
Присвоить имя новому контейнеру или сопоставить существующий контейнер.
При идентификации существующего контейнера имя может быть именем или длинным или коротким идентификатором контейнера.
network_mode
строка
Подключить контейнер к сети. Доступные варианты — bridge, host, none, container:<name|id>, <network_name> или default.
*Примечание* что с community.docker 2.0.0, если networks_cli_compatible — true и networks содержит по крайней мере одну сеть, значение по умолчанию для network_mode будет именем первой сети в списке networks. Вы можете предотвратить это, явно задав значение для network_mode, например, значение по умолчанию default, которое будет использовано Docker, если network_mode не указан.
networks
список / элементы=словарь
Список сетей, к которым принадлежит контейнер.
Примеры структуры данных и использования см. в примерах ниже.
Для удаления контейнера из одной или нескольких сетей используйте опцию purge_networks.
Если networks_cli_compatible установлено в false, это не удалит сеть по умолчанию, если networks указан. Это отличается от поведения docker run .... Для принудительного удаления сети по умолчанию (и всех других сетей, не указанных явно в networks) в этом случае вам нужно явно использовать purge_networks.
aliases
список / элементы=строка
Список псевдонимов для этого контейнера в этой сети. Эти имена могут использоваться в сети для доступа к этому контейнеру.
ipv4_address
строка
IP-адрес контейнера в этой сети.
ipv6_address
строка
IPv6-адрес контейнера в этой сети.
links
список / элементы=строка
Список контейнеров для связи.
name
строка / обязательно
Имя сети.
networks_cli_compatible
boolean
    Варианты:
  • нет
  • да ←
Если networks_cli_compatible установлено в значение yes (по умолчанию), этот модуль будет работать как docker run --network и *не* добавит сеть по умолчанию, если указан параметр networks. Если networks не указан, сеть по умолчанию будет подключена.
Когда networks_cli_compatible установлено в значение no и сети предоставлены модулю через параметр networks, модуль работает иначе, чем docker run --network: docker run --network other создаст контейнер с сетью other подключённой, но сеть по умолчанию не подключена. Этот модуль с networks: {name: other} создаст контейнер с обеими сетями default и other подключенными. Если purge_networks установлено в значение yes, сеть default будет удалена после этого.
*Примечание*: команда docker CLI также устанавливает network_mode в имя первой добавленной сети, если --network указано. Для большей совместимости с docker CLI, вам нужно явно установить network_mode в имя первой добавляемой сети. Это поведение изменится для community.docker 2.0.0: тогда network_mode будет автоматически установлен в имя первой сети в networks, если network_mode не указан, networks содержит хотя бы одну запись и networks_cli_compatible равно true.
oom_killer
boolean
    Варианты:
  • нет
  • да
Отключать или нет OOM Killer для контейнера.
oom_score_adj
integer
Целочисленное значение, определяющее рейтинг контейнера для настройки предпочтений OOM Killer.
output_logs
boolean
    Варианты:
  • нет ←
  • да
Если установлено в true, вывод команды контейнера будет выведен.
Эффективно только когда log_driver установлено в json-file или journald.
paused
boolean
    Варианты:
  • нет
  • да
Использовать с состоянием started для приостановки работающих процессов внутри контейнера.
Если container_default_behavior установлено в compatiblity (значение по умолчанию), этот параметр имеет значение по умолчанию no.
pid_mode
string
Установить режим пространства имен PID для контейнера.
Обратите внимание, что Docker SDK для Python < 2.0 поддерживает только host. Более новые версии Docker SDK для Python (docker) позволяют использовать все значения, поддерживаемые демоном Docker.
pids_limit
integer
Установить предел PIDs для контейнера. Принимает целочисленное значение.
Установите -1 для неограниченных PIDs.
privileged
boolean
    Варианты:
  • нет
  • да
Предоставить расширенные привилегии контейнеру.
Если container_default_behavior установлено в compatiblity (значение по умолчанию), этот параметр имеет значение по умолчанию no.
published_ports
list / elements=string
Список портов для публикации из контейнера на хост.
Используйте синтаксис docker CLI: 8000, 9000:8000, или 0.0.0.0:9000:8000, где 8000 - порт контейнера, 9000 - порт хоста, а 0.0.0.0 - интерфейс хоста.
Можно использовать диапазоны портов для источника и назначения. Если указаны два диапазона с разной длиной, используется более короткий диапазон. С версии community.general 0.2.0, если диапазон источника имеет длину 1, порт не будет назначен первому порту диапазона назначения, а свободному порту в этом диапазоне. Это поведение такое же, как у команды docker.
Адреса привязки должны быть либо IPv4, либо IPv6 адресами. Имена хостов *не* разрешены. Это отличается от команды docker. Используйте dig lookup для разрешения имён хостов.
Значение all опубликует все открытые порты контейнера на случайные порты хоста, игнорируя другие сопоставления.
Если параметр networks предоставлен, будет проверен каждый сетевой адаптер, чтобы определить, существует ли мост с необязательным параметром com.docker.network.bridge.host_binding_ipv4. Если такая сеть найдена, то опубликованные порты, для которых не указан адрес хоста, будут привязаны к адресу хоста, указанному в com.docker.network.bridge.host_binding_ipv4. Обратите внимание, что первая мостовая сеть с com.docker.network.bridge.host_binding_ipv4 значением, встреченная в списке networks, будет использоваться.

псевдонимы: порты
pull
boolean
    Варианты:
  • нет ←
  • да
Если true, всегда подтягивает последнюю версию образа. В противном случае, подтянет образ только при отсутствии.
*Примечание*: образы подтягиваются только при указании имени. Если образ указан как идентификатор образа (хеш), его нельзя подтянуть.
purge_networks
boolean
    Варианты:
  • нет ←
  • да
Удалить контейнер из ВСЕХ сетей, не включённых в параметр networks.
Любые сети по умолчанию, такие как bridge, если их нет в networks, также будут удалены.
read_only
boolean
    Варианты:
  • нет
  • да
Подключить корневую файловую систему контейнера в режиме только для чтения.
Если container_default_behavior установлено в compatiblity (значение по умолчанию), этот параметр имеет значение по умолчанию no.
recreate
boolean
    Варианты:
  • нет ←
  • да
Использовать с состояниями present и started, чтобы принудительно пересоздать существующий контейнер.
removal_wait_timeout
float
При удалении существующего контейнера, вызов API демона docker завершается после того, как контейнер запланирован на удаление. Удаление обычно происходит очень быстро, но в условиях высокой нагрузки ввода-вывода оно может занять больше времени.
По умолчанию модуль будет ждать, пока контейнер не будет удалён, прежде чем пытаться (пере)создать его, сколько бы времени это ни заняло.
Установив этот параметр, модуль будет ждать не более этого количества секунд, пока контейнер не будет удалён. Если контейнер всё ещё находится на стадии удаления после этого времени, модуль завершится с ошибкой.
restart
boolean
    Варианты:
  • нет ←
  • да
Использовать со статусом started, чтобы принудительно остановить и перезапустить соответствующий контейнер.
restart_policy
string
    Варианты:
  • нет
  • при ошибке
  • всегда
  • если не остановлен
Политика перезапуска контейнера.
Оберните no в кавычки.
restart_retries
integer
Использовать с политикой перезапуска для управления максимальным количеством попыток перезапуска.
runtime
string
Исполняемая среда для контейнера.
security_opts
list / elements=string
Список параметров безопасности в формате "label:user:User".
shm_size
string
Размер /dev/shm в формате <number>[<unit>]. Число — положительное целое. Единица измерения может быть B (байт), K (кибибайт, 1024Б), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт).
Опускание единицы измерения по умолчанию устанавливает значение в байтах. Если размер опущен полностью, демон Docker использует 64M.
ssl_version
string
Укажите допустимое значение версии SSL. Значение по умолчанию определяется модулем ssl.py.
Если значение не указано в задаче, вместо этого будет использовано значение переменной окружения DOCKER_SSL_VERSION.
state
string
    Choices:
  • absent
  • present
  • stopped
  • started ←
absent - Контейнер с указанным именем будет остановлен и удален. Используйте force_kill для завершения работы контейнера, а не для его остановки. Используйте keep_volumes для сохранения анонимных томов, связанных с удаленным контейнером.
present - Подтверждает существование контейнера, соответствующего имени и любым предоставленным параметрам конфигурации. Если контейнер не соответствует имени, будет создан новый контейнер. Если контейнер соответствует имени, но предоставленная конфигурация не совпадает, контейнер будет обновлен, если это возможно. Если обновление невозможно, он будет удален и пересоздан с запрошенной конфигурацией.
started - Убеждается, что контейнер сначала present, а затем, если контейнер не запущен, переводит его в состояние запуска. Используйте restart для принудительной остановки и перезапуска соответствующего контейнера.
stopped - Убеждается, что контейнер сначала present, а затем, если контейнер запущен, переводит его в состояние остановки.
Для управления тем, что будет учитываться при сравнении конфигураций, см. параметр comparisons. Чтобы избежать учета версии образа, можно также использовать параметр ignore_image.
Используйте параметр recreate, чтобы всегда принудительно пересоздавать соответствующий контейнер, даже если он запущен.
Если контейнер должен быть завершён вместо остановки в случае необходимости остановки для пересоздания или потому, что state является stopped, используйте параметр force_kill. Используйте keep_volumes для сохранения анонимных томов, связанных с удалённым контейнером.
Используйте keep_volumes для сохранения анонимных томов, связанных с удалённым контейнером.
stop_signal
string
Переопределяет стандартный сигнал, используемый для остановки контейнера.
stop_timeout
integer
Количество секунд ожидания остановки контейнера перед отправкой SIGKILL. При создании контейнера этим модулем его конфигурация StopTimeout будет установлена в это значение.
При остановке контейнера будет использоваться в качестве таймаута для остановки контейнера. В случае наличия у контейнера пользовательской конфигурации StopTimeout, поведение зависит от версии демона Docker. Новые версии демона Docker всегда будут использовать значение StopTimeout, настроенное для контейнера, если оно было настроено.
sysctls
dictionary
Словарь пар ключ-значение.
timeout
integer
Default:
60
Максимальное время в секундах ожидания ответа от API.
Если значение не указано в задаче, используется значение переменной окружения DOCKER_TIMEOUT. Если переменная окружения не задана, используется значение по умолчанию.
tls
boolean
    Choices:
  • no ←
  • yes
Защитите соединение с API с помощью TLS без проверки подлинности сервера Docker. Обратите внимание, что если validate_certs также установлен в yes, он будет иметь приоритет.
Если значение не указано в задаче, используется значение переменной окружения DOCKER_TLS. Если переменная окружения не задана, используется значение по умолчанию.
tls_hostname
string
Default:
"localhost"
При проверке подлинности сервера Docker укажите ожидаемое имя сервера.
Если значение не указано в задаче, используется значение переменной окружения DOCKER_TLS_HOSTNAME. Если переменная окружения не задана, используется значение по умолчанию.
tmpfs
list / elements=string
Подмонтировать каталог tmpfs.
tty
boolean
    Choices:
  • no
  • yes
Выделить псевдо-терминал.
Если container_default_behavior установлен в compatiblity (значение по умолчанию), этот параметр имеет значение по умолчанию no.
ulimits
list / elements=string
Список параметров ulimit. Параметр ulimit задаётся как nofile:262144:262144.
user
string
Устанавливает имя пользователя или UID, а также, необязательно, имя группы или GID для указанной команды.
Может быть в формате user, user:group, uid, uid:gid, user:gid или uid:group.
userns_mode
string
Устанавливает режим пространства имён пользователя для контейнера. В настоящее время единственными допустимыми значениями являются host и пустая строка.
uts
string
Устанавливает режим пространства имён UTS для контейнера.
validate_certs
boolean
    Choices:
  • no ←
  • yes
Защитите соединение с API с помощью TLS и проверьте подлинность сервера Docker.
Если значение не указано в задаче, используется значение переменной окружения DOCKER_TLS_VERIFY. Если переменная окружения не задана, используется значение по умолчанию.

псевдонимы: tls_verify
volume_driver
string
Драйвер томов контейнера.
volumes
list / elements=string
Список томов, которые необходимо подмонтировать внутри контейнера.
Используйте синтаксис docker CLI: /host:/container[:mode]
Режимы монтирования могут быть перечислены через запятую различными способами, такими как ro, rw, consistent, delegated, cached, rprivate, private, rshared, shared, rslave, slave, и nocopy. Обратите внимание, что демон Docker может не поддерживать все режимы и комбинации таких режимов.
SELinux-хосты могут дополнительно использовать z или Z для использования общего или частного метки для тома.
Обратите внимание, что Ansible 2.7 и более ранние версии поддерживали только один режим, который должен был быть одним из ro, rw, z, и Z.
volumes_from
list / elements=string
Список имён или идентификаторов контейнеров для получения томов.
working_dir
string
Путь к рабочей директории.

Примечания

Примечание

  • Для большинства изменений конфигурации требуется пересоздание контейнера, то есть существующий контейнер должен быть уничтожен, а новый создан. Это может привести к непредвиденной потере данных и простоя. Вы можете использовать параметр comparisons, чтобы этого избежать.
  • Если модулю необходимо пересоздать контейнер, он будет использовать только те параметры, которые были предоставлены модулю для создания нового контейнера (кроме image). Поэтому всегда указывайте все параметры, относящиеся к контейнеру.
  • Если restart установлен в значение true, модуль будет перезапускать контейнер только в том случае, если не обнаружено изменений в конфигурации. Обратите внимание, что у нескольких параметров есть значения по умолчанию; если контейнер, который нужно перезапустить, использует другие значения для этих параметров, он будет пересоздан вместо этого. Параметры со значениями по умолчанию, которые могут вызвать это, это auto_remove, detach, init, interactive, memory, paused, privileged, read_only и tty. Это поведение можно изменить, установив container_default_behavior в no_defaults, что будет значением по умолчанию для community.docker 2.0.0 и выше.
  • Подключитесь к демону Docker, предоставляя параметры с каждой задачей или определяя переменные окружения. Вы можете определить DOCKER_HOST, DOCKER_TLS_HOSTNAME, DOCKER_API_VERSION, DOCKER_CERT_PATH, DOCKER_SSL_VERSION, DOCKER_TLS, DOCKER_TLS_VERIFY и DOCKER_TIMEOUT. Если вы используете docker machine, запустите скрипт, поставляемый с продуктом, для настройки среды. Он установит эти переменные за вас. Для получения дополнительной информации см. https://docs.docker.com/machine/reference/env/.
  • При подключении к демону Docker с помощью TLS, возможно, потребуется установить дополнительные пакеты Python. Для Docker SDK для Python, версии 2.4 или новее, это можно сделать, установив docker[tls] с помощью ansible.builtin.pip.
  • Обратите внимание, что Docker SDK для Python позволяет указать путь к конфигурации Docker только для очень небольшого числа функций. В целом, он будет использовать $HOME/.docker/config.json если переменная окружения DOCKER_CONFIG не указана, и использовать $DOCKER_CONFIG/config.json в противном случае.
  • Этот модуль использует Docker SDK для Python для связи с демоном Docker.

Примеры

- name: Create a data container
  community.docker.docker_container:
    name: mydata
    image: busybox
    volumes:
      - /data

- name: Re-create a redis container
  community.docker.docker_container:
    name: myredis
    image: redis
    command: redis-server --appendonly yes
    state: present
    recreate: yes
    exposed_ports:
      - 6379
    volumes_from:
      - mydata

- name: Restart a container
  community.docker.docker_container:
    name: myapplication
    image: someuser/appimage
    state: started
    restart: yes
    links:
     - "myredis:aliasedredis"
    devices:
     - "/dev/sda:/dev/xvda:rwm"
    ports:
     # Publish container port 9000 as host port 8080
     - "8080:9000"
     # Publish container UDP port 9001 as host port 8081 on interface 127.0.0.1
     - "127.0.0.1:8081:9001/udp"
     # Publish container port 9002 as a random host port
     - "9002"
     # Publish container port 9003 as a free host port in range 8000-8100
     # (the host port will be selected by the Docker daemon)
     - "8000-8100:9003"
     # Publish container ports 9010-9020 to host ports 7000-7010
     - "7000-7010:9010-9020"
    env:
        SECRET_KEY: "ssssh"
        # Values which might be parsed as numbers, booleans or other types by the YAML parser need to be quoted
        BOOLEAN_KEY: "yes"

- name: Container present
  community.docker.docker_container:
    name: mycontainer
    state: present
    image: ubuntu:14.04
    command: sleep infinity

- name: Stop a container
  community.docker.docker_container:
    name: mycontainer
    state: stopped

- name: Start 4 load-balanced containers
  community.docker.docker_container:
    name: "container{{ item }}"
    recreate: yes
    image: someuser/anotherappimage
    command: sleep 1d
  with_sequence: count=4

- name: Remove container
  community.docker.docker_container:
    name: ohno
    state: absent

- name: Syslogging output
  community.docker.docker_container:
    name: myservice
    image: busybox
    log_driver: syslog
    log_options:
      syslog-address: tcp://my-syslog-server:514
      syslog-facility: daemon
      # NOTE: in Docker 1.13+ the "syslog-tag" option was renamed to "tag" for
      # older docker installs, use "syslog-tag" instead
      tag: myservice

- name: Create db container and connect to network
  community.docker.docker_container:
    name: db_test
    image: "postgres:latest"
    networks:
      - name: "{{ docker_network_name }}"

- name: Start container, connect to network and link
  community.docker.docker_container:
    name: sleeper
    image: ubuntu:14.04
    networks:
      - name: TestingNet
        ipv4_address: "172.1.1.100"
        aliases:
          - sleepyzz
        links:
          - db_test:db
      - name: TestingNet2

- name: Start a container with a command
  community.docker.docker_container:
    name: sleepy
    image: ubuntu:14.04
    command: ["sleep", "infinity"]

- name: Add container to networks
  community.docker.docker_container:
    name: sleepy
    networks:
      - name: TestingNet
        ipv4_address: 172.1.1.18
        links:
          - sleeper
      - name: TestingNet2
        ipv4_address: 172.1.10.20

- name: Update network with aliases
  community.docker.docker_container:
    name: sleepy
    networks:
      - name: TestingNet
        aliases:
          - sleepyz
          - zzzz

- name: Remove container from one network
  community.docker.docker_container:
    name: sleepy
    networks:
      - name: TestingNet2
    purge_networks: yes

- name: Remove container from all networks
  community.docker.docker_container:
    name: sleepy
    purge_networks: yes

- name: Start a container and use an env file
  community.docker.docker_container:
    name: agent
    image: jenkinsci/ssh-slave
    env_file: /var/tmp/jenkins/agent.env

- name: Create a container with limited capabilities
  community.docker.docker_container:
    name: sleepy
    image: ubuntu:16.04
    command: sleep infinity
    capabilities:
      - sys_time
    cap_drop:
      - all

- name: Finer container restart/update control
  community.docker.docker_container:
    name: test
    image: ubuntu:18.04
    env:
      arg1: "true"
      arg2: "whatever"
    volumes:
      - /tmp:/tmp
    comparisons:
      image: ignore   # don't restart containers with older versions of the image
      env: strict   # we want precisely this environment
      volumes: allow_more_present   # if there are more volumes, that's ok, as long as `/tmp:/tmp` is there

- name: Finer container restart/update control II
  community.docker.docker_container:
    name: test
    image: ubuntu:18.04
    env:
      arg1: "true"
      arg2: "whatever"
    comparisons:
      '*': ignore  # by default, ignore *all* options (including image)
      env: strict   # except for environment variables; there, we want to be strict

- name: Start container with healthstatus
  community.docker.docker_container:
    name: nginx-proxy
    image: nginx:1.13
    state: started
    healthcheck:
      # Check if nginx server is healthy by curl'ing the server.
      # If this fails or timeouts, the healthcheck fails.
      test: ["CMD", "curl", "--fail", "http://nginx.host.com"]
      interval: 1m30s
      timeout: 10s
      retries: 3
      start_period: 30s

- name: Remove healthcheck from container
  community.docker.docker_container:
    name: nginx-proxy
    image: nginx:1.13
    state: started
    healthcheck:
      # The "NONE" check needs to be specified
      test: ["NONE"]

- name: Start container with block device read limit
  community.docker.docker_container:
    name: test
    image: ubuntu:18.04
    state: started
    device_read_bps:
      # Limit read rate for /dev/sda to 20 mebibytes per second
      - path: /dev/sda
        rate: 20M
    device_read_iops:
      # Limit read rate for /dev/sdb to 300 IO per second
      - path: /dev/sdb
        rate: 300

- name: Start container with GPUs
  community.docker.docker_container:
    name: test
    image: ubuntu:18.04
    state: started
    device_requests:
      - # Add some specific devices to this container
        device_ids:
          - '0'
          - 'GPU-3a23c669-1f69-c64e-cf85-44e9b07e7a2a'
      - # Add nVidia GPUs to this container
        driver: nvidia
        count: -1  # this means we want all
        capabilities:
          # We have one OR condition: 'gpu' AND 'utility'
          - - gpu
            - utility
          # See https://github.com/NVIDIA/nvidia-container-runtime#supported-driver-capabilities
          # for a list of capabilities supported by the nvidia driver

Значения возврата

Общие значения возврата документированы здесь, следующие поля уникальны для данного модуля:

Ключ Возвращаемое значение Описание
container
словарь
всегда
Факты, представляющие текущее состояние контейнера. Соответствует выводу docker inspection.
До версии 2.3 это было ansible_docker_container, но в версии 2.3 было переименовано в docker_container, из-за конфликтов с плагином подключения.
Пустой, если state — absent.
Если detached — false, будет включать атрибут Output, содержащий любой вывод из выполнения контейнера.

Пример:
{ "AppArmorProfile": "", "Args": [], "Config": { "AttachStderr": false, "AttachStdin": false, "AttachStdout": false, "Cmd": [ "/usr/bin/supervisord" ], "Domainname": "", "Entrypoint": null, "Env": [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ], "ExposedPorts": { "443/tcp": {}, "80/tcp": {} }, "Hostname": "8e47bf643eb9", "Image": "lnmp_nginx:v1", "Labels": {}, "OnBuild": null, "OpenStdin": false, "StdinOnce": false, "Tty": false, "User": "", "Volumes": { "/tmp/lnmp/nginx-sites/logs/": {} }, ... }
status
целое число
когда state — started, и detached — false, и когда ожидание результата контейнера не завершилось ошибкой
В случае запуска контейнера без отсоединения, это содержит код выхода процесса в контейнере.
До community.docker 1.1.0, это возвращалось только при ненулевом значении.



Авторы

  • Cove Schneider (@cove)
  • Joshua Conner (@joshuaconner)
  • Pavel Antonov (@softzilla)
  • Thomas Steinbach (@ThomasSteinbach)
  • Philippe Jandot (@zfil)
  • Daan Oosterveld (@dusdanig)
  • Chris Houseknecht (@chouseknecht)
  • Kassian Sun (@kassiansun)
  • Felix Fontein (@felixfontein)

© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/community/docker/docker_container_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API