community.docker.docker_container – управление контейнерами docker
Примечание
Этот плагин входит в коллекцию community.docker (версия 1.1.0).
Для установки используйте: ansible-galaxy collection install community.docker.
Для использования в playbook, укажите: community.docker.docker_container.
Обзор
- Управление жизненным циклом контейнеров docker.
- Поддерживает режим проверки. Запустите с
--checkи--diffдля просмотра различий в конфигурации и списка действий, которые будут выполнены.
Требования
Ниже перечислены требования к хосту, на котором выполняется этот модуль.
- Docker API >= 1.20
- Docker SDK для Python: Обратите внимание, что модуль Python docker-py устарел и заменён на docker (подробнее см. здесь). Для Python 2.6, необходимо использовать
docker-py. В противном случае рекомендуется установить модуль Pythondocker. Обратите внимание, что оба модуля не должны устанавливаться одновременно. Также обратите внимание, что при установке и последующем удалении одного из модулей, другой может перестать работать, и потребуется его повторная установка. - Docker SDK для Python >= 1.8.0 (используйте docker-py для Python 2.6)
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии | |
|---|---|---|---|
| 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 путь | Использовать сертификат CA при проверке сервера, указав путь к файлу сертификата CA. Если значение не указано в задаче и переменная среды 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 строка |
| Различные параметры модуля, используемые для определения значений по умолчанию. Это вызывает проблемы с контейнерами, которые используют разные значения для этих параметров. Значение по умолчанию - compatibility, которое обеспечит использование значений по умолчанию, когда пользователь не указывает их явно.Начиная с community.docker 2.0.0, значение по умолчанию переключится на no_defaults. Чтобы избежать предупреждений об устаревании, установите container_default_behavior в явное значение.Это влияет на параметры auto_remove, detach, init, interactive, memory, paused, privileged, read_only и tty. | |
| cpu_period целое число | Ограничение периода планировщика CFS (Completely Fair Scheduler) для CPU. Для более удобного использования см. cpus. | ||
| cpu_quota целое число | Ограничение квоты планировщика CFS (Completely Fair Scheduler) для CPU. Для более удобного использования см. cpus. | ||
| cpu_shares целое число | Доли CPU (относительный вес). | ||
| cpus вещественное число | Укажите, сколько ресурсов процессора может использовать контейнер. Значение 1.5 означает, что будет использоваться не более полутора процессоров (ядер). | ||
| cpuset_cpus строка | Процессоры, в которых разрешено выполнение 1,3 или 1-3. | ||
| cpuset_mems строка | Узлы памяти (MEM), в которых разрешено выполнение 0-3 или 0,1. | ||
| debug логическое значение |
| Режим отладки | |
| 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. | ||
| count целое число | Количество устройств для запроса. Установите в -1 для запроса всех доступных устройств. | ||
| device_ids список / элементы=строка | Список идентификаторов устройств. | ||
| driver строка | Какой драйвер использовать для этого устройства. | ||
| options словарь | Параметры, специфичные для драйвера. | ||
| device_write_bps список / элементы=словарь | Список устройств и скорости записи (байты в секунду) на устройство. | ||
| путь строка / обязательно | Путь к устройству в контейнере. | ||
| скорость строка / обязательно | Предел чтения устройства в формате <number>[<unit>]. Число — положительное целое. Единица измерения может быть одной из B (байт), K (кибибайт, 1024Б), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт).Если единица измерения опущена, по умолчанию используется байт. | ||
| device_write_iops список / элементы=словарь | Список устройств и скоростей записи (ввода-вывода в секунду) на устройство. | ||
| путь строка / обязательно | Путь к устройству в контейнере. | ||
| скорость целое число / обязательно | Предел чтения устройства. Должно быть положительным целым числом. | ||
| 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 переопределяет значение из env_file. | ||
| 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 булево |
| Когда состояние равно present или started, модуль сравнивает конфигурацию существующего контейнера с запрошенной конфигурацией. Оценка включает версию изображения. Если версия изображения в реестре не совпадает с контейнером, контейнер будет пересоздан. Можно остановить это поведение, установив ignore_image в значение True.*Предупреждение:* Этот параметр игнорируется, если в параметре comparisons указано image: ignore или *: ignore. | |
| 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 строка | Общий предел памяти (память + своп) в формате <number>[<unit>]. Число — положительное целое. Единица измерения может быть B (байт), K (кибибайт, 1024Б), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт).Если единица измерения опущена, по умолчанию используется байты. | ||
| memory_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 строка |
| Тип монтирования. Обратите внимание, что 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 .... В этом случае необходимо явно использовать purge_networks, чтобы принудительно удалить сеть по умолчанию (и все другие сети, не явно указанные в networks). | ||
| aliases список / элементы=строка | Список псевдонимов для данного контейнера в данной сети. Эти имена можно использовать в сети для доступа к этому контейнеру. | ||
| ipv4_address строка | IP-адрес контейнера IPv4 в этой сети. | ||
| ipv6_address строка | IP-адрес контейнера IPv6 в этой сети. | ||
| links список / элементы=строка | Список контейнеров, которые нужно связать. | ||
| name строка / обязательно | Имя сети. | ||
| networks_cli_compatible логическое значение |
| Если 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 также устанавливает network_mode в имя первой добавленной сети, если --network указано. Для большей совместимости с docker CLI, вам нужно явно установить network_mode в имя первой добавляемой сети. Это поведение изменится в community.docker 2.0.0: тогда network_mode автоматически будет установлен в имя первой сети в networks, если network_mode не указан, networks содержит по крайней мере одну запись, и networks_cli_compatible равно true. | |
| oom_killer логическое значение |
| Включить или выключить OOM Killer для контейнера. | |
| oom_score_adj целое число | Целое числовое значение, определяющее бал контейнера, чтобы настроить предпочтения OOM killer. | ||
| журналы_вывода boolean |
| Если установлено в значение true, вывод команды контейнера будет выведен. Эффективно только при установке log_driver в json-file или journald. | |
| приостановлен boolean |
| Используйте со статусом started для приостановки запущенных процессов внутри контейнера. Если container_default_behavior установлено в compatiblity (значение по умолчанию), этот параметр имеет значение по умолчанию no. | |
| pid_режим string | Установите режим пространства имен PID для контейнера. Обратите внимание, что Docker SDK для Python < 2.0 поддерживает только host. Более новые версии Docker SDK для Python (docker) разрешают все значения, поддерживаемые демоном Docker. | ||
| pids_предел целое число | Установите предел PID для контейнера. Принимает целое число. Установите -1 для неограниченного PID. | ||
| с привилегиями boolean |
| Предоставьте расширенные привилегии контейнеру. Если container_default_behavior установлено в compatiblity (значение по умолчанию), этот параметр имеет значение по умолчанию no. | |
| опубликованные_порты список / элементы=строка | Список портов для публикации из контейнера на хост. Используйте синтаксис 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. Если такой сетевой интерфейс найден, опубликованные порты, где не указан IP-адрес хоста, будут привязаны к IP-адресу хоста, указанному в com.docker.network.bridge.host_binding_ipv4. Обратите внимание, что первый сетевой мост с значением com.docker.network.bridge.host_binding_ipv4 в списке networks будет использован.псевдонимы: порты | ||
| скачать boolean |
| Если true, всегда загружает последнюю версию изображения. В противном случае загрузит изображение только при отсутствии. *Примечание:* изображения загружаются только при указании имени. Если изображение указано как идентификатор изображения (хеш), его нельзя загрузить. | |
| очистить_сети boolean |
| Удалить контейнер из ВСЕХ сетей, не включенных в параметр networks. Любые сетевые интерфейсы по умолчанию, такие как bridge, если они не найдены в networks, также будут удалены. | |
| только_чтение boolean |
| Подключить корневую файловую систему контейнера в режиме только для чтения. Если container_default_behavior установлено в compatiblity (значение по умолчанию), этот параметр имеет значение по умолчанию no. | |
| пересоздать boolean |
| Используйте со состояниями present и started, чтобы принудительно пересоздать существующий контейнер. | |
| срок_ожидания_удаления float | При удалении существующего контейнера, вызов API демона Docker завершается после того, как контейнер запланирован на удаление. Обычно удаление происходит очень быстро, но при высокой нагрузке на ввод-вывод оно может занять больше времени. По умолчанию модуль будет ждать, пока контейнер не будет удален, прежде чем пытаться (пере-)создать его, сколько бы это ни заняло времени. Установив этот параметр, модуль будет ждать не более заданного количества секунд, пока контейнер не будет удален. Если контейнер всё ещё находится в процессе удаления по истечении этого времени, модуль завершится с ошибкой. | ||
| перезапустить boolean |
| Используйте со статусом started, чтобы принудительно остановить и перезапустить соответствующий контейнер. | |
| политика_перезапуска строка |
| Политика перезапуска контейнера. Включите кавычки вокруг параметра no. | |
| попытки_перезапуска целое число | Используйте с политикой перезапуска для управления максимальным количеством попыток перезапуска. | ||
| среда_исполнения строка | Среда выполнения для контейнера. | ||
| security_opts список / элементы=строка | Список параметров безопасности в формате "label:user:User". | ||
| размер_shm строка | Размер /dev/shm в формате <number>[<unit>]. Число - положительное целое число. Единица измерения может быть B (байт), K (кибибайт, 1024Б), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт).Опущение единицы измерения по умолчанию устанавливает байты. Если вы полностью опуская размер, Docker демен использует 64M. | ||
| ssl_версия строка | Укажите корректный номер версии SSL. Значение по умолчанию определяется модулем ssl.py. Если значение не указано в задаче, используется значение переменной окружения DOCKER_SSL_VERSION. | ||
| состояние строка |
| absent - Контейнер, соответствующий указанному имени, будет остановлен и удалён. Используйте force_kill для принудительного завершения контейнера вместо его остановки. Используйте keep_volumes для сохранения анонимных томов, связанных с удалённым контейнером.present - Утверждает существование контейнера, соответствующего имени и любым предоставленным параметрам конфигурации. Если контейнер не соответствует имени, он будет создан. Если контейнер соответствует имени, но предоставленная конфигурация не совпадает, контейнер будет обновлён, если это возможно. Если обновление невозможно, он будет удалён и пересоздан с запрошенной конфигурацией.started - Утверждает, что контейнер сначала present, а затем, если контейнер не запущен, переведёт его в состояние работы. Используйте restart для принудительной остановки и перезапуска соответствующего контейнера.stopped - Утверждает, что контейнер сначала present, а затем, если контейнер запущен, переведёт его в состояние остановки.Для управления тем, что будет учитываться при сравнении конфигураций, используйте параметр comparisons. Чтобы не учитывать версию изображения, также можно использовать параметр ignore_image. Используйте параметр recreate для принудительного пересоздания соответствующего контейнера, даже если он запущен. Если контейнер должен быть принудительно завершён вместо остановки, если это необходимо для пересоздания, или потому что state равно stopped, используйте параметр force_kill. Используйте keep_volumes для сохранения анонимных томов, связанных с удалённым контейнером.Используйте keep_volumes для сохранения анонимных томов, связанных с удалённым контейнером. | |
| сигнал_остановки строка | Переопределите используемый по умолчанию сигнал для остановки контейнера. | ||
| timeout_остановки целое число | Количество секунд ожидания остановки контейнера перед отправкой SIGKILL. Когда контейнер создаётся этим модулем, его конфигурация StopTimeout устанавливается на это значение.При остановке контейнера используется как таймаут для остановки контейнера. В случае наличия у контейнера пользовательской конфигурации StopTimeout, поведение зависит от версии демона Docker. Новые версии демона Docker всегда будут использовать значение StopTimeout, настроенное в контейнере, если оно настроено. | ||
| sysctls словарь | Словарь пар ключ-значение. | ||
| timeout целое число | По умолчанию: 60 | Максимальное количество времени в секундах ожидания ответа от API. Если значение не указано в задаче, используется значение переменной окружения DOCKER_TIMEOUT.Если переменная окружения не задана, используется значение по умолчанию. | |
| tls boolean |
| Защитите соединение с API с помощью TLS без проверки подлинности сервера Docker. Обратите внимание, что если параметр validate_certs также установлен в yes, он будет иметь приоритет.Если значение не указано в задаче, используется значение переменной окружения DOCKER_TLS.Если переменная окружения не задана, используется значение по умолчанию. | |
| tls_hostname строка | Значение по умолчанию: "localhost" | При проверке подлинности сервера Docker Host укажите ожидаемое имя сервера. Если значение не указано в задаче, вместо него будет использовано значение переменной окружения DOCKER_TLS_HOSTNAME. Если переменная окружения не задана, будет использовано значение по умолчанию. | |
| tmpfs список / элементы=строка | Монтировать каталог tmpfs. | ||
| tty логический тип |
| Выделить псевдо-TTY. Если container_default_behavior задано как compatiblity (значение по умолчанию), по умолчанию используется значение no. | |
| ulimits список / элементы=строка | Список параметров ulimit. Параметр ulimit задаётся как nofile:262144:262144. | ||
| user строка | Устанавливает имя пользователя или UID, а также необязательно имя группы или GID для указанной команды. Может иметь вид user, user:group, uid, uid:gid, user:gid или uid:group. | ||
| userns_mode строка | Установить режим пространства имён пользователя для контейнера. В настоящее время единственные допустимые значения — host и пустая строка. | ||
| uts строка | Установить режим пространства имён UTS для контейнера. | ||
| validate_certs логический тип |
| Обеспечьте подключение к API с использованием TLS и проверьте подлинность сервера Docker host. Если значение не указано в задаче, вместо него будет использовано значение переменной окружения DOCKER_TLS_VERIFY. Если переменная окружения не задана, будет использовано значение по умолчанию.псевдонимы: tls_verify | |
| volume_driver строка | Драйвер контейнерного тома. | ||
| volumes список / элементы=строка | Список томов для монтирования внутри контейнера. Используйте синтаксис 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 список / элементы=строка | Список имён или ID контейнеров для получения томов. | ||
| working_dir строка | Путь к рабочей директории. | ||
Примечания
Примечание
- Для большинства изменений конфигурации контейнер необходимо пересоздать, то есть существующий контейнер нужно уничтожить и создать новый. Это может привести к непредвиденной потере данных и простоям. Вы можете использовать параметр 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–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/community/docker/docker_container_module.html