Spec-Zone.ru › Ansible 2.8

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

Новое в версии 2.1.

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

Описание

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

Требования

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

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

Spec-Zone.ru

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