community.general.docker_container – управление контейнерами Docker
Примечание
Этот плагин является частью коллекции community.general (версия 1.3.2).
Для его установки используйте: ansible-galaxy collection install community.general.
Чтобы использовать его в книге задач, укажите: community.general.docker_container.
Описание
- Управление жизненным циклом контейнеров Docker.
- Поддерживает режим проверки. Запустите с
--checkи--diffдля просмотра различий в конфигурации и списка действий, которые будут выполнены.
Требования
Ниже перечислены требования к хосту, на котором будет выполняться этот модуль.
- API Docker >= 1.20
- Docker SDK для Python: Обратите внимание, что модуль Python docker-py был заменён на docker (подробнее см. здесь). Для Python 2.6 необходимо использовать
docker-py. В противном случае рекомендуется установить модуль Pythondocker. Обратите внимание, что оба модуля не должны устанавливаться одновременно. Также обратите внимание, что при установке и удалении одного из модулей другой может перестать работать, и потребуется его повторная установка. - 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 путь | Использовать сертификат CA при проверке сервера, указав путь к файлу сертификата CA. Если значение не указано в задаче и переменная окружения DOCKER_CERT_PATH установлена, используется файл ca.pem из каталога, указанного в переменной окружения DOCKER_CERT_PATH.Псевдонимы: tls_ca_cert, cacert_path | ||
| cap_drop список / элементы=строка | Список возможностей, которые необходимо отбросить для контейнера. | ||
| capabilities список / элементы=строка | Список возможностей, которые необходимо добавить к контейнеру. | ||
| 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 строка добавлено в 0.2.0 community.general |
| Различные параметры модуля имеют значения по умолчанию. Это приводит к проблемам с контейнерами, которые используют разные значения для этих параметров. Значение по умолчанию — compatibility, что гарантирует использование значений по умолчанию, когда пользователь их не указывает явно.С community.general 3.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 вещественное число добавлено в 0.2.0 community.general | Укажите, сколько доступных ресурсов процессора может использовать контейнер. Значение 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 (килобайт, 1024B), M (мегабайт), G (гигабайт), T (тегабайт) или P (петабайт).Опущение единицы измерения по умолчанию предполагает байты. | ||
| device_read_iops список / элементы=словарь | Список устройств и скорости чтения (операций ввода-вывода в секунду) с устройства. | ||
| path строка / обязательно | Путь к устройству в контейнере. | ||
| rate целое число / обязательно | Предел скорости чтения устройства. Должно быть положительным целым числом. | ||
| device_requests список / элементы=словарь | Позволяет запросить дополнительные ресурсы, такие как графические процессоры. | ||
| capabilities список / элементы=список | Список списков строк для запроса возможностей. Элементы верхнего уровня списка комбинируются по OR, а для каждого элемента списка элементы, которые он содержит, комбинируются по AND. Драйвер пытается удовлетворить один из подсписков. Доступные возможности для драйвера nvidia можно найти по адресу https://github.com/NVIDIA/nvidia-container-runtime. | ||
| count целое число | Количество запрашиваемых устройств. Установите -1 для запроса всех доступных устройств. | ||
| device_ids список / элементы=строка | Список идентификаторов устройств. | ||
| driver строка | Драйвер, который нужно использовать для этого устройства. | ||
| options словарь | Параметры, специфичные для драйвера. | ||
| device_write_bps список / элементы=словарь | Список устройств и скорости записи (байты в секунду) на устройство. | ||
| path строка / обязательно | Путь к устройству в контейнере. | ||
| скорость строка / обязательно | Предел чтения устройства в формате <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 переопределит. | ||
| etc_hosts словарь | Словарь сопоставлений хост-IP, где каждое имя хоста — ключ в словаре. Каждое имя хоста будет добавлено в файл /etc/hosts контейнера. | ||
| exposed_ports список / элементы=строка | Список дополнительных портов контейнера, который сообщает Docker, что контейнер прослушивает указанные сетевые порты во время выполнения. Если порт уже экспонирован с помощью EXPOSE в Dockerfile, его не нужно экспонировать повторно.псевдонимы: exposed, expose | ||
| force_kill булево |
| Использовать команду kill при остановке работающего контейнера. псевдонимы: forcekill | |
| groups список / элементы=строка | Список дополнительных имён групп и/или идентификаторов, под которыми будет работать процесс контейнера. | ||
| healthcheck словарь | Настройка проверки, которая выполняется для определения, являются ли контейнеры для данной службы «здоровыми». См. документацию по инструкции HEALTHCHECK Dockerfile для получения подробной информации о работе проверок состояния.
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 string | MAC-адрес контейнера (например, 92:d0:c6:0a:29:33). | ||
| memory string | Предел памяти в формате <number>[<unit>]. Число — положительное целое. Единица измерения может быть B (байт), K (кибибайт, 1024 Б), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт).Опускание единицы измерения по умолчанию устанавливает байты. Если container_default_behavior установлено в compatiblity (значение по умолчанию), это значение по умолчанию "0". | ||
| memory_reservation string | Мягкий предел памяти в формате <number>[<unit>]. Число — положительное целое. Единица измерения может быть B (байт), K (кибибайт, 1024 Б), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт).Опускание единицы измерения по умолчанию устанавливает байты. | ||
| memory_swap string | Общий предел памяти (память + своп) в формате <number>[<unit>]. Число — положительное целое. Единица измерения может быть B (байт), K (кибибайт, 1024 Б), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт).Опускание единицы измерения по умолчанию устанавливает байты. | ||
| memory_swappiness integer | Настройка поведения свопа памяти контейнера. Принимает целое число от 0 до 100. Если не установлено, значение останется таким же, если контейнер существует, и будет унаследован от хост-машины, если он (пере-)создаётся. | ||
| mounts list / elements=dictionary | Спецификация для добавления монтирований в контейнер. Более мощная альтернатива volumes. | ||
| consistency string |
| Требование согласованности для монтирования. | |
| labels dictionary | Пользовательские имена и метки для тома. Действительно только для типа volume. | ||
| no_copy boolean |
| Ложь, если том должен быть заполнен данными из целевого источника. Действительно только для типа volume.Значение по умолчанию — false. | |
| propagation string |
| Режим распространения. Действительно только для типа bind. | |
| read_only boolean |
| Должно ли монтирование быть только для чтения. | |
| source string | Источник монтирования (например, имя тома или путь хоста). | ||
| target string / required | Путь внутри контейнера. | ||
| tmpfs_mode string | Режим разрешений для монтирования tmpfs. | ||
| tmpfs_size string | Размер монтирования tmpfs в байтах в формате <число>[<единица>]. Число — положительное целое. Единица измерения может быть одной из B (байт), K (кибибайт, 1024 Б), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт).Опускание единицы измерения по умолчанию устанавливает байты. | ||
| type string |
| Тип монтирования. Обратите внимание, что npipe поддерживается только Docker for Windows. | |
| volume_driver string | Укажите драйвер томов. Действительно только для типа volume.Подробности см. здесь. | ||
| volume_options dictionary | Словарь параметров, специфичных для выбранного volume_driver. Подробности см. здесь. | ||
| name string / required | Назначьте имя новому контейнеру или сопоставьте существующий контейнер. При идентификации существующего контейнера имя может быть именем или длинным или коротким идентификатором контейнера. | ||
| network_mode string | Подключите контейнер к сети. Варианты: bridge, host, none, container:<name|id>, <network_name> или default.*Примечание*: начиная с community.general 3.0.0, если networks_cli_compatible равно true, а networks содержит по крайней мере одну сеть, значение по умолчанию для network_mode будет именем первой сети в списке networks. Вы можете предотвратить это, явно указав значение для network_mode, например, значение по умолчанию default, которое будет использоваться Docker, если network_mode не указано. | ||
| networks list / elements=dictionary | Список сетей, к которым принадлежит контейнер. Примеры структуры данных и использования см. в примерах ниже. Чтобы удалить контейнер из одной или нескольких сетей, используйте опцию purge_networks. Обратите внимание, что в отличие от docker run ..., community.general.docker_container не удаляет сеть по умолчанию, если указано networks. Вам необходимо явно использовать purge_networks, чтобы принудительно удалить сеть по умолчанию (и все другие сети, не указанные явно в networks). В качестве альтернативы используйте опцию networks_cli_compatible, которая будет включена по умолчанию начиная с community.general 2.0.0. | ||
| aliases list / elements=string | Список псевдонимов для этого контейнера в этой сети. Эти имена могут использоваться в сети для достижения этого контейнера. | ||
| ipv4_address string | IP-адрес контейнера в этой сети. | ||
| ipv6_address string | IP-адрес контейнера в этой сети. | ||
| links list / elements=string | Список контейнеров для подключения. | ||
| name string / required | Имя сети. | ||
| networks_cli_compatible boolean |
| Когда сети предоставляются модулю с помощью параметра networks, модуль ведет себя иначе, чем docker run --network: docker run --network other создаст контейнер с подключенной сетью other, но сеть по умолчанию не подключена. Этот модуль с networks: {name: other} создаст контейнер с подключенными как default, так и other. Если purge_networks установлено в yes, сеть default будет удалена после этого.Если networks_cli_compatible установлено в yes, этот модуль будет вести себя как docker run --network и *не* добавит сеть по умолчанию, если networks указано. Если networks не указано, сеть по умолчанию будет подключена.*Примечание*: CLI Docker также устанавливает network_mode в имя первой добавленной сети, если указано --network. Для большей совместимости с CLI Docker, необходимо явно задать network_mode в имя первой добавляемой сети. Это поведение изменится в community.general 3.0.0: тогда network_mode будет автоматически установлен в имя первой сети в networks, если network_mode не указан, networks содержит по крайней мере одну запись и networks_cli_compatible равно true.Текущее значение равно no. Новое значение по умолчанию yes будет установлено в community.general 2.0.0. | |
| oom_killer boolean |
| Отключить или нет OOM Killer для контейнера. | |
| oom_score_adj integer | Целое значение, содержащее рейтинг, присвоенный контейнеру, чтобы настроить предпочтения OOM Killer. | ||
| output_logs boolean |
| Если установлено в true, вывод команды контейнера будет напечатан. Эффективно только при log_driver, установленном в json-file или journald. | |
| приостановлен boolean |
| Используется с состоянием started для приостановки выполнения процессов внутри контейнера. Если container_default_behavior установлено в compatiblity (значение по умолчанию), этот параметр имеет значение по умолчанию no. | |
| pid_mode строка | Устанавливает режим пространства имен PID для контейнера. Обратите внимание, что Docker SDK для Python < 2.0 поддерживает только host. Более новые версии Docker SDK для Python (docker) позволяют использовать все значения, поддерживаемые Docker-демон. | ||
| pids_limit целое число | Устанавливает лимит PIDs для контейнера. Принимает целое число. Установите -1 для неограниченного количества PIDs. | ||
| привилегии boolean |
| Предоставляет расширенные привилегии контейнеру. Если container_default_behavior установлено в compatiblity (значение по умолчанию), этот параметр имеет значение по умолчанию no. | |
| published_ports список / элементы=строка | Список портов для публикации из контейнера на хост. Используйте синтаксис 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, также будут удалены. | |
| только чтение boolean |
| Монтирует корневую файловую систему контейнера в режиме только для чтения. Если container_default_behavior установлено в compatiblity (значение по умолчанию), этот параметр имеет значение по умолчанию no. | |
| пересоздать boolean |
| Используется с текущими и запущенными состояниями для принудительного пересоздания существующего контейнера. | |
| removal_wait_timeout float добавлен в 0.2.0 community.general | При удалении существующего контейнера, вызов API Docker-демона завершается после того, как контейнер запланирован на удаление. Удаление обычно происходит очень быстро, но в условиях высокой нагрузки ввода-вывода оно может занять больше времени. По умолчанию модуль будет ждать, пока контейнер не будет удален, прежде чем пытаться (пере)создать его, сколько бы времени это ни занимало. Установив этот параметр, модуль будет ждать не более этого количества секунд, пока контейнер не будет удален. Если контейнер по-прежнему находится в процессе удаления после этого времени, модуль завершится с ошибкой. | ||
| перезапуск boolean |
| Используется с состоянием started для принудительной остановки и перезапуска соответствующего контейнера. | |
| restart_policy строка |
| Политика перезапуска контейнера. Добавьте кавычки вокруг параметра no. | |
| restart_retries целое число | Используется с политикой перезапуска для управления максимальным количеством попыток перезапуска. | ||
| runtime строка | Исполняемая среда для контейнера. | ||
| security_opts список / элементы=строка | Список параметров безопасности в формате "label:user:User". | ||
| shm_size строка | Размер /dev/shm в формате <number>[<unit>]. Число - положительное целое число. Единица измерения может быть B (байт), K (кибибайт, 1024Б), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт).Опускание единицы измерения по умолчанию устанавливает байты. Если размер опущен полностью, Docker-демон использует 64M. | ||
| ssl_version строка | Укажите корректный номер версии 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 для сохранения анонимных томов, связанных с удаленным контейнером. | |
| stop_signal строка | Переопределить сигнал по умолчанию, используемый для остановки контейнера. | ||
| stop_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. | ||
| trust_image_content логическое значение |
| Если yes, пропускается проверка образа.Этот параметр никогда не использовался модулем. Он будет удалён в версии community.general 3.0.0. | |
| 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 список / элементы=строка | Список имён или идентификаторов контейнеров, из которых нужно получить тома. | ||
| working_dir строка | Путь к рабочему каталогу. | ||
Примечания
Примечание
- Для большинства изменений конфигурации требуется повторное создание контейнера, т. е. существующий контейнер нужно уничтожить и создать новый. Это может привести к непредвиденной потере данных и простоям. Вы можете использовать опцию comparisons, чтобы этого избежать.
- Если модулю нужно пересоздать контейнер, он будет использовать только параметры, предоставленные модулю для создания нового контейнера (кроме image). Поэтому всегда указывайте все параметры, относящиеся к контейнеру.
- Если restart установлен на
true, модуль будет перезапускать контейнер только в случае отсутствия изменений конфигурации. Обратите внимание, что у некоторых параметров есть значения по умолчанию; если контейнер, который нужно перезапустить, использует другие значения для этих параметров, он будет пересоздан вместо этого. Параметры со значениями по умолчанию, которые могут вызвать это, — auto_remove, detach, init, interactive, memory, paused, privileged, read_only и tty. Это поведение можно изменить, установив container_default_behavior наno_defaults, что будет значением по умолчанию начиная с community.general 3.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 for Python версии 2.4 или новее это можно сделать, установив
docker[tls]с помощью ansible.builtin.pip. - Обратите внимание, что Docker SDK for Python позволяет указывать путь к конфигурации Docker только для очень немногих функций. В общем случае, он будет использовать
$HOME/.docker/config.jsonесли переменная окруженияDOCKER_CONFIGне указана, и использовать$DOCKER_CONFIG/config.jsonв противном случае.
Примеры
- name: Create a data container
community.general.docker_container:
name: mydata
image: busybox
volumes:
- /data
- name: Re-create a redis container
community.general.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.general.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.general.docker_container:
name: mycontainer
state: present
image: ubuntu:14.04
command: sleep infinity
- name: Stop a container
community.general.docker_container:
name: mycontainer
state: stopped
- name: Start 4 load-balanced containers
community.general.docker_container:
name: "container{{ item }}"
recreate: yes
image: someuser/anotherappimage
command: sleep 1d
with_sequence: count=4
- name: Remove container
community.general.docker_container:
name: ohno
state: absent
- name: Syslogging output
community.general.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.general.docker_container:
name: db_test
image: "postgres:latest"
networks:
- name: "{{ docker_network_name }}"
- name: Start container, connect to network and link
community.general.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.general.docker_container:
name: sleepy
image: ubuntu:14.04
command: ["sleep", "infinity"]
- name: Add container to networks
community.general.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.general.docker_container:
name: sleepy
networks:
- name: TestingNet
aliases:
- sleepyz
- zzzz
- name: Remove container from one network
community.general.docker_container:
name: sleepy
networks:
- name: TestingNet2
purge_networks: yes
- name: Remove container from all networks
community.general.docker_container:
name: sleepy
purge_networks: yes
- name: Start a container and use an env file
community.general.docker_container:
name: agent
image: jenkinsci/ssh-slave
env_file: /var/tmp/jenkins/agent.env
- name: Create a container with limited capabilities
community.general.docker_container:
name: sleepy
image: ubuntu:16.04
command: sleep infinity
capabilities:
- sys_time
cap_drop:
- all
- name: Finer container restart/update control
community.general.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.general.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.general.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.general.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.general.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.general.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 inspect. Обратите внимание, что данные являются частью зарегистрированных переменных Ansible начиная с версии 2.8. Для совместимости данные также доступны напрямую как docker_container. Обратите внимание, что возвращаемые данные будут удалены в версии community.general 2.0.0.До версии 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/": {} }, ... } |
Авторы
- 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/general/docker_container_module.html