docker_container – управление контейнерами docker
Новое в версии 2.1.
Описание
- Управление жизненным циклом контейнеров 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 (используйте docker-py для Python 2.6)
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии | |
|---|---|---|---|
| api_version строка | По умолчанию: "auto" | Версия Docker API, работающая на хосте Docker. По умолчанию устанавливается последняя версия API, поддерживаемая Docker SDK для Python и демоном docker. Если значение не указано в задаче, используется значение переменной окружения DOCKER_API_VERSION. Если переменная окружения не задана, используется значение по умолчанию.псевдонимы: docker_api_version | |
| auto_remove логическое значение добавлено в 2.4 |
| Включить автоматическое удаление контейнера на стороне демона, когда процесс контейнера завершается. | |
| blkio_weight целое число | Вес ввода-вывода блочных устройств (относительный), от 10 до 1000. | ||
| ca_cert путь | Использование сертификата CA при проверке сервера, указав путь к файлу сертификата CA. Если значение не указано в задаче и переменная окружения DOCKER_CERT_PATH установлена, используется файл ca.pem из каталога, указанного в переменной окружения DOCKER_CERT_PATH. псевдонимы: tls_ca_cert, cacert_path | ||
| cap_drop список добавлено в 2.7 | Список прав, которые необходимо удалить из контейнера. | ||
| capabilities список | Список прав, которые необходимо добавить в контейнер. | ||
| cleanup логическое значение добавлено в 2.2 |
| Используйте с 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 словарь добавлено в 2.8 | Позволяет указать, как сравнивать свойства существующих контейнеров с параметрами модуля, чтобы определить, следует ли пересоздавать/обновлять контейнер. Можно указать только те параметры, которые соответствуют состоянию контейнера, обрабатываемому демоном Docker, а также networks.Должен быть словарь, указывающий для параметра один из ключей strict, ignore и allow_more_present.Если strict указан, значения проверяются на равенство, и изменения всегда приводят к обновлению или перезапуску. Если ignore указан, изменения игнорируются.allow_more_present разрешено только для списков, множеств и словарей. Если оно указано для списков или множеств, контейнер будет обновлен или перезапущен только в том случае, если параметр модуля содержит значение, отсутствующее в параметрах контейнера. Если параметр указан для словаря, контейнер будет обновлен или перезапущен только в том случае, если параметр модуля содержит ключ, отсутствующий в параметрах контейнера, или если значение существующего ключа отличается.Дикий символ * может использоваться для установки одного из значений по умолчанию strict или ignore для *всех* сравнений, которые не явно установлены на другие значения.Подробности см. в примерах. | ||
| cpu_period целое число | Ограничение периода планирования CPU CFS (Completely Fair Scheduler). | ||
| cpu_quota целое число | Ограничение квоты планирования CPU CFS (Completely Fair Scheduler). | ||
| cpu_shares целое число | Доли CPU (относительный вес). | ||
| cpuset_cpus строка | CPUs, в которых разрешена работа 1,3 или 1-3. | ||
| cpuset_mems строка | Узлы памяти (MEMs), в которых разрешена работа 0-3 или 0,1. | ||
| debug логическое значение |
| Режим отладки | |
| detach логическое значение |
| Включить режим открепления, чтобы оставить контейнер работающим в фоновом режиме. Если отключено, задача будет отражать состояние выполнения контейнера (ошибка, если команда завершилась ошибкой). | |
| device_read_bps список добавлено в 2.8 | Список путей к устройствам и скорости чтения (байты в секунду) из устройства. | ||
| path строка / обязательно | Путь к устройству в контейнере. | ||
| rate строка / обязательно | Предел чтения устройства в формате <number>[<unit>].Число — положительное целое. Единица измерения может быть одной из B (байт), K (килобайт, 1024Б), M (мегабайт), G (гигабайт), T (терабайт) или P (петабайт).Опускание единицы измерения по умолчанию равно байтам. | ||
| device_read_iops список добавлено в 2.8 | Список устройств и скорости чтения (IO в секунду) из устройства. | ||
| path строка / обязательно | Путь к устройству в контейнере. | ||
| rate целое число / обязательно | Предел чтения устройства. Должно быть положительным целым числом. | ||
| device_write_bps список добавлено в 2.8 | Список устройств и скорости записи (байты в секунду) на устройство. | ||
| path строка / обязательно | Путь к устройству в контейнере. | ||
| rate строка / обязательно | Предел записи устройства в формате <number>[<unit>].Число — положительное целое. Единица измерения может быть одной из B (байт), K (килобайт, 1024Б), M (мегабайт), G (гигабайт), T (терабайт) или P (петабайт).Опускание единицы измерения по умолчанию равно байтам. | ||
| device_write_iops список добавлено в 2.8 | Список устройств и скорости записи (IO в секунду) на устройство. | ||
| path строка / обязательно | Путь к устройству в контейнере. | ||
| скорость целое число / обязательно | Предел чтения устройства. Должно быть положительным целым числом. | ||
| устройства список | Список привязок устройств хоста для добавления в контейнер. Каждая привязка — это отображение, выраженное в формате <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 строка добавлено в 2.5 | Имя домена контейнера. | ||
| entrypoint список | Команда, которая перезаписывает значение по умолчанию ENTRYPOINT изображения. | ||
| env словарь | Словарь пар ключ-значение. Значения, которые могут быть распарсены как числа, булевы значения или другие типы парсером YAML, должны быть заключены в кавычки (например, "true") для предотвращения потери данных. | ||
| env_file путь добавлено в 2.2 | Путь к файлу на целевом устройстве, содержащему переменные окружения FOO=BAR. Если переменная также присутствует в env, то значение env переопределит её. | ||
| etc_hosts словарь | Словарь сопоставлений имя-хоста с IP-адресом, где имя хоста — ключ в словаре. Каждое имя хоста будет добавлено в файл /etc/hosts контейнера. | ||
| exposed_ports список | Список дополнительных портов контейнера, который сообщает Docker о том, что контейнер прослушивает указанные сетевые порты во время выполнения. Если порт уже экспонирован с использованием EXPOSE в Dockerfile, повторное экспонирование не требуется.псевдонимы: exposed, expose | ||
| force_kill логическое |
| Использовать команду kill при остановке запущенного контейнера. псевдонимы: forcekill | |
| groups список | Список дополнительных имён групп и/или идентификаторов групп, под которыми будет работать процесс контейнера. | ||
| healthcheck словарь добавлено в 2.8 | Настройка проверки, которая выполняется для определения того, являются ли контейнеры для данной службы «здоровыми». См. документацию по инструкции HEALTHCHECK Dockerfile для получения подробной информации о работе проверок состояния.
interval, timeout и start_period задаются как длительности. Они принимают длительности в формате, похожем на: 5h34m56s, 1m30s и т. д. Поддерживаемые единицы измерения — us, ms, s, m и h. | ||
| интервал строка | Время между выполнением проверки. По умолчанию используется демоном Docker 30s. | ||
| повторы целое число | Необходимое количество последовательных сбоев для отметки о нездоровье. По умолчанию используется демоном Docker 3. | ||
| период_старта строка | Период запуска контейнера для инициализации перед началом отсчёта попыток проверки состояния. По умолчанию используется демоном Docker 0s. | ||
| тест сырой | Команда для проверки состояния. Должна быть либо строкой, либо списком. Если это список, первый элемент должен быть одним из NONE, CMD или CMD-SHELL. | ||
| таймаут строка | Максимальное время выполнения одной проверки. По умолчанию используется демоном Docker 30s. | ||
| hostname строка | Имя хоста контейнера. | ||
| ignore_image логическое добавлено в 2.2 |
| Когда состояние равно present или started, модуль сравнивает конфигурацию существующего контейнера с запрошенной конфигурацией. В оценку включается версия образа. Если версия образа в реестре не совпадает с контейнером, контейнер будет пересоздан. Вы можете остановить это поведение, установив ignore_image в True. *Предупреждение:* Этот параметр игнорируется, если image: ignore или *: ignore указаны в параметре comparisons. | |
| image строка | Путь к репозиторию и метка, используемые для создания контейнера. Если изображение не найдено или pull равен true, изображение будет загружено из реестра. Если метка не указана, будет использовано latest. Также может быть идентификатором изображения. В этом случае предполагается, что изображение доступно локально. Параметр pull игнорируется в этом случае. | ||
| init логическое добавлено в 2.6 |
| Запустить init внутри контейнера, который перенаправляет сигналы и собирает процессы. Для этого параметра требуется API Docker >= 1.25. | |
| interactive логическое |
| Сохранить stdin открытым после запуска контейнера, даже если он не прикреплён. | |
| 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 строка | Переопределить сигнал по умолчанию, используемый для убийства запущенного контейнера. | ||
| метки словарь | Словарь пар ключ-значение. | ||
| ссылки список | Список псевдонимов имён для связанных контейнеров в формате container_name:alias. Указание этого значения заставит контейнер перезапуститься. | ||
| лог_драйвер строка | Укажите драйвер логирования. Docker по умолчанию использует json-file. Возможные варианты см. здесь. | ||
| лог_опции словарь | Словарь опций, специфичных для выбранного лог_драйвера. Подробности см. в https://docs.docker.com/engine/admin/logging/overview/. псевдонимы: лог_опт | ||
| mac_адрес строка | MAC-адрес контейнера (например, 92:d0:c6:0a:29:33). | ||
| память строка | По умолчанию: "0" | Предел памяти в формате <number>[<unit>]. Число — положительное целое. Единица измерения может быть B (байт), K (кибибайт, 1024Б), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт).Если единица измерения опущена, по умолчанию используется байт. | |
| резервирование_памяти строка | Мягкий предел памяти в формате <number>[<unit>]. Число — положительное целое. Единица измерения может быть B (байт), K (кибибайт, 1024Б), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт).Если единица измерения опущена, по умолчанию используется байт. | ||
| память_с_подкачкой строка | Общий предел памяти (память + подкачка) в формате <number>[<unit>]. Число — положительное целое. Единица измерения может быть B (байт), K (кибибайт, 1024Б), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт).Если единица измерения опущена, по умолчанию используется байт. | ||
| memory_swappiness целое число | Настройка поведения подкачки памяти контейнера. Принимает целое число от 0 до 100. Если не задано, значение останется прежним, если контейнер существует, и будет унаследовано от хост-машины, если он (пере)создается. | ||
| имя строка / обязательно | Присвоение имени новому контейнеру или сопоставление с существующим контейнером. При идентификации существующего контейнера имя может быть именем или полным или коротким идентификатором контейнера. | ||
| режим_сети строка | Подключение контейнера к сети. Варианты: bridge, host, none или container:<name|id>. | ||
| сети список добавлен в 2.2 | Список сетей, к которым принадлежит контейнер. Примеры структуры данных и использования см. в ПРИМЕРАХ ниже. Чтобы удалить контейнер из одной или нескольких сетей, используйте опцию purge_networks. Обратите внимание, что в отличие от docker run ..., модуль docker_container не удаляет сеть по умолчанию, если указаны сети. Вам необходимо явно использовать purge_networks, чтобы принудительно удалить сеть по умолчанию (и все другие сети, не явно указанные в сетях). В качестве альтернативы используйте опцию networks_cli_compatible, которая по умолчанию будет включена в Ansible 2.12. | ||
| псевдонимы список | Список псевдонимов для данного контейнера в этой сети. Эти имена могут использоваться в сети для доступа к этому контейнеру. | ||
| ipv4_адрес строка | IPv4-адрес контейнера в этой сети. | ||
| ipv6_адрес строка | IPv6-адрес контейнера в этой сети. | ||
| ссылки список | Список контейнеров, к которым нужно установить ссылку. | ||
| имя строка / обязательно | Имя сети. | ||
| networks_cli_compatible логическое значение добавлен в 2.8 |
| Когда сети предоставляются модулю через опцию сети, модуль ведет себя иначе, чем docker run --network: docker run --network other создаст контейнер с сетью other подключенной, но без сети по умолчанию. Этот модуль с сети: {имя: другое} создаст контейнер, к которому подключены обе default и other. Если purge_networks установлено в yes, сеть default будет удалена после этого.Если networks_cli_compatible установлено в yes, этот модуль будет вести себя как docker run --network и не будет добавлять сеть по умолчанию, если заданы сети. Если сети не заданы, будет подключена сеть по умолчанию.Обратите внимание, что Docker CLI также устанавливает network_mode в имя первой добавленной сети, если --network задано. Для большей совместимости с Docker CLI, необходимо явно установить network_mode в имя первой добавляемой сети.Текущее значение no. Новое значение по умолчанию yes будет установлено в Ansible 2.12. | |
| oom_killer логическое значение |
| Включить или выключить OOM Killer для контейнера. | |
| oom_score_adj целое число добавлен в 2.2 | Целочисленное значение, содержащее балл, присвоенный контейнеру для настройки параметров OOM-убийцы. | ||
| output_logs логическое значение добавлен в 2.7 |
| Если установлено в true, вывод команды контейнера будет выведен. Действует только когда лог_драйвер установлен на json-file или journald. | |
| приостановлен логическое значение |
| Используется в состоянии запущенного для приостановки процессов, выполняющихся внутри контейнера. | |
| режим_pid строка | Установите режим пространства имен PID для контейнера. Обратите внимание, что Docker SDK для Python < 2.0 поддерживает только host. Более новые версии Docker SDK для Python (docker) позволяют все значения, поддерживаемые Docker-демон. | ||
| предел_pids целое число добавлен в 2.8 | Установите предел PID для контейнера. Принимает целое значение. Установите -1 для неограниченных PID. | ||
| привилегии логическое значение |
| Предоставление расширенных привилегий контейнеру. | |
| опубликованные_порты список | Список портов, которые нужно опубликовать из контейнера на хост. Используйте синтаксис docker CLI: 8000, 9000:8000, или 0.0.0.0:9000:8000, где 8000 — порт контейнера, 9000 — порт хоста, а 0.0.0.0 — интерфейс хоста.Для исходных и целевых портов можно использовать диапазоны портов. Если указаны два диапазона с разной длиной, будет использоваться более короткий диапазон. Адреса привязки должны быть 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 будет использована.псевдонимы: порты | ||
| скачать булево |
| Если true, всегда загружает последнюю версию изображения. В противном случае изображение загружается только при отсутствии. *Примечание*: изображения загружаются только при указании имени. Если изображение указано как идентификатор изображения (хеш), оно не может быть загружено. | |
| очистить_сети булево добавлено в 2.2 |
| Удалить контейнер из ВСЕХ сетей, не включённых в параметр networks. Любые сети по умолчанию, такие как bridge, если они не найдены в networks, также будут удалены. | |
| только_чтение булево |
| Монтировать корневую файловую систему контейнера в режиме только для чтения. | |
| пересоздать булево |
| Используйте для текущего и запущенного состояний, чтобы принудительно пересоздать существующий контейнер. | |
| перезапуск булево |
| Используйте для состояния «запущен» чтобы принудительно остановить и перезапустить соответствующий контейнер. | |
| политика_перезапуска строка |
| Политика перезапуска контейнера. Введите no option в кавычки. | |
| количество_повторных_перезапусков целое | Используйте с политикой перезапуска для управления максимальным количеством попыток перезапуска. | ||
| виртуальная_машина строка добавлено в 2.8 | Использовать виртуальную машину для контейнера. | ||
| безопасные_опции список | Список безопасных опций в формате "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, чтобы принудительно остановить и перезапустить соответствующий контейнер.started - Утверждает, что контейнер сначала present, а затем, если контейнер запущен, переведёт его в состояние «остановлен».Чтобы управлять тем, что будет учитываться при сравнении конфигурации, см. опцию comparisons. Чтобы избежать учёта версии изображения, вы также можете использовать опцию ignore_image. Используйте опцию recreate, чтобы всегда принудительно пересоздавать соответствующий контейнер, даже если он запущен. Если контейнер должен быть убит вместо остановки, если его нужно остановить для пересоздания, или потому что state равен stopped, используйте опцию force_kill. Используйте keep_volumes для сохранения объёмов, связанных с удалённым контейнером.Используйте keep_volumes для сохранения объёмов, связанных с удалённым контейнером. | |
| сигнал_остановки строка | Переопределяет сигнал по умолчанию, используемый для остановки контейнера. | ||
| таймаут_остановки целое | Количество секунд ожидания остановки контейнера перед отправкой SIGKILL. При создании контейнера этим модулем его конфигурация StopTimeout будет установлена на это значение.При остановке контейнера будет использоваться таймаут для остановки контейнера. В случае если у контейнера есть настраиваемое значение StopTimeout, поведение зависит от версии Docker-демона. Новые версии Docker-демона всегда будут использовать настроенное значение StopTimeout контейнера, если оно настроено. | ||
| sysctls словарь добавлено в 2.4 | Словарь пар «ключ-значение». | ||
| таймаут целое | По умолчанию: 60 | Максимальное время ожидания ответа от API в секундах. Если значение не указано в задаче, вместо него будет использовано значение переменной окружения DOCKER_TIMEOUT. Если переменная окружения не задана, будет использовано значение по умолчанию. | |
| tls булево |
| Защитить соединение с API с помощью TLS без проверки подлинности сервера Docker-хоста. Обратите внимание, что если validate_certs также установлено в yes, оно будет иметь приоритет.Если значение не указано в задаче, вместо него будет использовано значение переменной окружения DOCKER_TLS. Если переменная окружения не задана, будет использовано значение по умолчанию. | |
| tls_имя_хоста строка | По умолчанию: "localhost" | При проверке подлинности сервера Docker-хоста укажите ожидаемое имя сервера. Если значение не указано в задаче, вместо него будет использовано значение переменной окружения DOCKER_TLS_HOSTNAME. Если переменная окружения не задана, будет использовано значение по умолчанию. | |
| tmpfs список добавлено в 2.4 | Монтировать каталог tmpfs. | ||
| доверять_содержимому_изображения булево |
| Если yes, пропускать проверку изображений. | |
| tty boolean |
| Выделить псевдо-терминал. | |
| ulimits список | Список параметров ulimit. Параметр ulimit задается как nofile:262144:262144. | ||
| user строка | Устанавливает имя пользователя или UID, а также необязательно имя группы или GID для указанной команды. Может иметь вид user, user:group, uid, uid:gid, user:gid или uid:group. | ||
| userns_mode строка добавлено в 2.5 | Устанавливает режим пространства имен пользователя для контейнера. В настоящее время единственные допустимые значения — host и пустая строка. | ||
| uts строка | Установить режим пространства имен UTS для контейнера. | ||
| validate_certs boolean |
| Защитите соединение с API, используя TLS и проверяя подлинность сервера Docker-хоста. Если значение не указано в задаче, будет использовано значение переменной среды 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 строка добавлено в 2.4 | Путь к рабочему каталогу. | ||
Примечания
Примечание
- Для большинства изменений конфигурации контейнер необходимо пересоздать, т. е. существующий контейнер нужно уничтожить и создать новый. Это может привести к непредвиденной потере данных и простою. Вы можете использовать параметр comparisons, чтобы этого избежать.
- Если модулю нужно пересоздать контейнер, он будет использовать только опции, предоставленные модулю для создания нового контейнера (кроме image). Поэтому всегда указывайте все параметры, относящиеся к контейнеру.
- Когда restart задано как
true, модуль будет перезапускать контейнер только в том случае, если не обнаружены изменения конфигурации. Обратите внимание, что у нескольких параметров есть значения по умолчанию; если контейнер, который необходимо перезапустить, использует другие значения для этих параметров, он будет пересоздан. Параметры со значениями по умолчанию, которые могут вызвать это, — auto_remove, detach, init, interactive, memory, paused, privileged, read_only и tty. - Подключитесь к демону 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://docker-py.readthedocs.io/en/stable/machine/ - При подключении к демону Docker с TLS вам может потребоваться установить дополнительные пакеты Python. Для Docker SDK для Python версии 2.4 или новее это можно сделать, установив
docker[tls]с помощью pip. - Обратите внимание, что Docker SDK для Python позволяет указать только путь к конфигурации Docker для очень немногих функций. В общем случае он будет использовать
$HOME/.docker/config.json, если переменная средыDOCKER_CONFIGне указана, и использовать$DOCKER_CONFIG/config.jsonв противном случае.
Примеры
- name: Create a data container
docker_container:
name: mydata
image: busybox
volumes:
- /data
- name: Re-create a redis container
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
docker_container:
name: myapplication
image: someuser/appimage
state: started
restart: yes
links:
- "myredis:aliasedredis"
devices:
- "/dev/sda:/dev/xvda:rwm"
ports:
- "8080:9000"
- "127.0.0.1:8081:9001/udp"
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
docker_container:
name: mycontainer
state: present
image: ubuntu:14.04
command: sleep infinity
- name: Stop a container
docker_container:
name: mycontainer
state: stopped
- name: Start 4 load-balanced containers
docker_container:
name: "container{{ item }}"
recreate: yes
image: someuser/anotherappimage
command: sleep 1d
with_sequence: count=4
- name: remove container
docker_container:
name: ohno
state: absent
- name: Syslogging output
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
docker_container:
name: db_test
image: "postgres:latest"
networks:
- name: "{{ docker_network_name }}"
- name: Start container, connect to network and link
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
docker_container:
name: sleepy
image: ubuntu:14.04
command: ["sleep", "infinity"]
- name: Add container to networks
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
docker_container:
name: sleepy
networks:
- name: TestingNet
aliases:
- sleepyz
- zzzz
- name: Remove container from one network
docker_container:
name: sleepy
networks:
- name: TestingNet2
purge_networks: yes
- name: Remove container from all networks
docker_container:
name: sleepy
purge_networks: yes
- name: Start a container and use an env file
docker_container:
name: agent
image: jenkinsci/ssh-slave
env_file: /var/tmp/jenkins/agent.env
- name: Create a container with limited capabilities
docker_container:
name: sleepy
image: ubuntu:16.04
command: sleep infinity
capabilities:
- sys_time
cap_drop:
- all
- name: Finer container restart/update control
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
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
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
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
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
Возвращаемые значения
Общие возвращаемые значения описаны здесь, следующие поля уникальны для данного модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| container словарь | всегда | Факты, отражающие текущее состояние контейнера. Соответствует выводу docker inspection. Обратите внимание, что факты являются частью зарегистрированных переменных с Ansible 2.8. Для совместимости факты также доступны непосредственно как docker_container. Обратите внимание, что возвращаемый факт будет удален в Ansible 2.12.До версии 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/": {} }, ... } |
Статус
- Этот модуль не гарантирует обратную совместимость интерфейса. [превью]
- Этот модуль поддерживается сообществом Ansible. [community]
Авторы
- 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.8/modules/docker_container_module.html