docker_container – управление контейнерами Docker
Новое в версии 2.1.
Обзор
- Управление жизненным циклом контейнеров Docker.
- Поддерживает режим проверки. Запустите с флагами –check и –diff, чтобы просмотреть разницу в конфигурации и список действий, которые необходимо выполнить.
Требования
Ниже перечислены требования к хосту, на котором выполняется этот модуль.
- python >= 2.6
- docker-py >= 1.7.0
- Обратите внимание, что модуль Python docker-py был заменён на docker (подробнее см. здесь). Для Python 2.6 необходимо использовать
docker-py. В противном случае рекомендуется установить модуль Pythondocker. Обратите внимание, что оба модуля не должны устанавливаться одновременно. Также обратите внимание, что при установке и удалении одного из этих модулей, другой может перестать работать, и потребуется его переустановка. - Docker API >= 1.20
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии | |
|---|---|---|---|
| api_version - | По умолчанию: "auto" | Версия API Docker, запущенного на Docker Host. По умолчанию используется последняя версия API, поддерживаемая docker-py. Если значение не указано в задаче, используется значение переменной окружения DOCKER_API_VERSION. Если переменная окружения не задана, используется значение по умолчанию.псевдонимы: docker_api_version | |
| auto_remove boolean добавлен в 2.4 |
| Включить автоматическое удаление контейнера на стороне демона, когда процесс контейнера завершается | |
| blkio_weight - | Ввод-вывод блоков (относительный вес), от 10 до 1000. | ||
| cacert_path - | Используйте сертификат CA при проверке сервера, указав путь к файлу сертификата CA. Если значение не указано в задаче и переменная окружения DOCKER_CERT_PATH задана, используется файл ca.pem из каталога, указанного в переменной окружения DOCKER_CERT_PATH. псевдонимы: tls_ca_cert | ||
| cap_drop - добавлен в 2.7 | Список возможностей, которые нужно удалить из контейнера. | ||
| capabilities - | Список возможностей, которые нужно добавить в контейнер. | ||
| cert_path - | Путь к файлу TLS-сертификата клиента. Если значение не указано в задаче и переменная окружения DOCKER_CERT_PATH задана, используется файл cert.pem из каталога, указанного в переменной окружения DOCKER_CERT_PATH. псевдонимы: tls_client_cert | ||
| cleanup boolean добавлен в 2.2 |
| Использовать с detach=false для удаления контейнера после успешного выполнения. | |
| command - | Команда, которая выполняется при запуске контейнера. Команда может быть строкой или списком. До версии 2.4 строки разделялись запятыми. | ||
| cpu_period - | Ограничение периода планирования CPU CFS (Completely Fair Scheduler) | ||
| cpu_quota - | Ограничение квоты CPU CFS (Completely Fair Scheduler) | ||
| cpu_shares - | Доли CPU (относительный вес). | ||
| cpuset_cpus - | Процессоры, в которых разрешено выполнение 1,3 или 1-3. | ||
| cpuset_mems - | Узлы памяти (MEM) в которых разрешено выполнение 0-3 или 0,1
| ||
| debug boolean |
| Режим отладки | |
| detach boolean |
| Включить режим открепления, чтобы оставить контейнер работающим в фоновом режиме. Если отключить, задача будет отображать состояние выполнения контейнера (неудача, если команда завершилась неудачно). | |
| devices - | Список привязок устройств хоста, которые нужно добавить в контейнер. Каждая привязка — отображение в формате: <путь_на_хосте>:<путь_в_контейнере>:<разрешения_cgroup> | ||
| 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 boolean |
| Использовать команду kill при остановке работающего контейнера. псевдонимы: forcekill | |
| groups - | Список дополнительных имён групп и/или идентификаторов групп, под которыми будет работать процесс контейнера. | ||
| hostname - | Имя хоста контейнера. | ||
| ignore_image boolean добавлен в 2.2 |
| Когда state присутствует или запущен, модуль сравнивает конфигурацию существующего контейнера с запрошенной конфигурацией. Оценка включает версию образа. Если версия образа в реестре не совпадает с контейнером, контейнер будет пересоздан. Прекратите это поведение, установив ignore_image в True. | |
| image - | Путь к репозиторию и тэг, используемые для создания контейнера. Если образ не найден или pull — true, образ будет загружен из реестра. Если тэг не указан, используется 'latest'. | ||
| init boolean добавлен в 2.6 |
| Запустить init внутри контейнера, который перенаправляет сигналы и собирает процессы. Этот параметр требует Docker API 1.25 и выше. | |
| interactive boolean |
| Сохранить stdin открытым после запуска контейнера, даже если он не присоединён. | |
| ipc_mode - | Установить режим IPC для контейнера. Может быть одним из значений 'container:<имя|id>' для повторного использования пространства имён IPC другого контейнера или 'host' для использования пространства имён IPC хоста внутри контейнера. | ||
| keep_volumes boolean |
| Сохранить объёмы, связанные с удалённым контейнером. | |
| kernel_memory - | Ограничение памяти ядра (формат: <number>[<unit>]). Число — положительное целое. Единица измерения может быть B (байт), K (кибибайт, 1024Б), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт). Минимальное значение — 4M. Опускание единицы измерения по умолчанию соответствует байтам. | ||
| key_path - | Путь к файлу ключа TLS клиента. Если значение не указано в задаче и установлена переменная окружения DOCKER_CERT_PATH, будет использован файл key.pem из директории, указанной в переменной окружения DOCKER_CERT_PATH. псевдонимы: tls_client_key | ||
| kill_signal - | Переопределение стандартного сигнала, используемого для убийства работающего контейнера. | ||
| labels - | Словарь пар «ключ-значение». | ||
| links - | Список псевдонимов имен для связанных контейнеров в формате container_name:alias. Установка этого параметра заставит контейнер перезапуститься. | ||
| log_driver - | Укажите драйвер логирования. Docker использует json-file по умолчанию. См. здесь для возможных вариантов. | ||
| log_options - | Словарь опций, специфичных для выбранного драйвера log_driver. Подробнее см. на https://docs.docker.com/engine/admin/logging/overview/. псевдонимы: log_opt | ||
| mac_address - | MAC-адрес контейнера (например, 92:d0:c6:0a:29:33). | ||
| memory - | По умолчанию: "0" | Ограничение памяти (формат: <number>[<unit>]). Число — положительное целое. Единица измерения может быть B (байт), K (кибибайт, 1024Б), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт).Опускание единицы измерения по умолчанию соответствует байтам. | |
| memory_reservation - | Мягкое ограничение памяти (формат: <number>[<unit>]). Число — положительное целое. Единица измерения может быть B (байт), K (кибибайт, 1024Б), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт).Опускание единицы измерения по умолчанию соответствует байтам. | ||
| memory_swap - | Общее ограничение памяти (память + своп, формат: <number>[<unit>]). Число — положительное целое. Единица измерения может быть B (байт), K (кибибайт, 1024Б), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт).Опускание единицы измерения по умолчанию соответствует байтам. | ||
| memory_swappiness - | Настройка поведения swappiness памяти контейнера. Принимает целое число от 0 до 100. Если не установлено, значение останется прежним, если контейнер существует, и будет унаследовано от хост-машины при его (повторном) создании. | ||
| name - / обязательно | Назначение имени новому контейнеру или соответствие существующему контейнеру. При идентификации существующего контейнера имя может быть именем или длинным или коротким идентификатором контейнера. | ||
| network_mode - | Подключение контейнера к сети. Доступные варианты: «bridge», «host», «none» или «container:<имя|id>» | ||
| networks список добавлен в 2.2 | Список сетей, к которым принадлежит контейнер. Примеры структуры данных и использования см. в ПРИМЕРАХ ниже. Для удаления контейнера из одной или нескольких сетей используйте опцию purge_networks. Обратите внимание, что в отличие от docker run ..., docker_container не удаляет сеть по умолчанию, если networks указано. Для принудительного удаления сети по умолчанию (и всех других сетей, не явно упомянутых в networks) необходимо явно использовать purge_networks. | ||
| aliases список | Список псевдонимов для этого контейнера в этой сети. Эти имена могут использоваться в сети для доступа к этому контейнеру. | ||
| ipv4_address строка | IPv4-адрес контейнера в этой сети. | ||
| ipv6_address строка | IPv6-адрес контейнера в этой сети. | ||
| links список | Список контейнеров для подключения. | ||
| name строка / обязательно | Имя сети. | ||
| oom_killer boolean |
| Включить/выключить механизм OOM Killer для контейнера. | |
| oom_score_adj - добавлен в 2.2 | Целочисленное значение, содержащее оценку контейнера для настройки предпочтений OOM Killer. | ||
| output_logs boolean добавлен в 2.7 |
| Если установлено в true, вывод команды контейнера будет напечатан (действительно только когда log_driver установлен на json-file или journald). | |
| paused boolean |
| Используйте со статусом «запущен» для приостановки работающих процессов внутри контейнера. | |
| pid_mode - | Установить режим пространства имён PID для контейнера. Обратите внимание, что docker-py < 2.0 поддерживает только «host». Более новые версии позволяют все значения, поддерживаемые демоном Docker. | ||
| privileged boolean |
| Предоставить расширенные привилегии контейнеру. | |
| published_ports - | Список портов для публикации из контейнера на хост. Используйте синтаксис docker CLI: 8000, 9000:8000, или 0.0.0.0:9000:8000, где 8000 — порт контейнера, 9000 — порт хоста, а 0.0.0.0 — интерфейс хоста.Значение 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, будет использована.Псевдонимы: ports | ||
| pull boolean |
| Если true, всегда подтягивает последнюю версию образа. В противном случае, будет подтягивать образ только при отсутствии. | |
| purge_networks boolean добавлен в 2.2 |
| Удаляет контейнер из ВСЕХ сетей, не включённых в параметр networks. Любые сети по умолчанию, такие как bridge, если они не найдены в networks, также будут удалены. | |
| read_only boolean |
| Монтирует корневую файловую систему контейнера в режиме только для чтения. | |
| recreate boolean |
| Используется с состояниями «существует» и «запущен» для принудительной пересоздания существующего контейнера. | |
| restart boolean |
| Используется с состоянием «запущен» для принудительной остановки и перезапуска соответствующего контейнера. | |
| restart_policy - |
| Политика перезапуска контейнера. Используйте кавычки вокруг варианта нет. | |
| restart_retries - | Используется с политикой перезапуска для управления максимальным количеством попыток перезапуска. | ||
| security_opts - | Список параметров безопасности в формате "label:user:User"
| ||
| shm_size - | Размер /dev/shm (формат: <number>[<unit>]). Число — положительное целое. Единица измерения может быть B (байт), K (кибибайт, 1024 байт), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт).Опущение единицы измерения по умолчанию задает байты. Если вы опустите размер полностью, система использует 64M. | ||
| ssl_version - | Укажите допустимый номер версии SSL. Значение по умолчанию определяется модулем ssl.py. Если значение не указано в задаче, будет использовано значение переменной окружения DOCKER_SSL_VERSION. | ||
| state - |
|
отсутствует — контейнер, соответствующий указанному имени, будет остановлен и удален. Используйте force_kill для убийства контейнера вместо остановки. Используйте keep_volumes для сохранения объёмов, связанных с удалённым контейнером.
существует — гарантирует существование контейнера, соответствующего имени и любым предоставленным параметрам конфигурации. Если нет соответствующего контейнера, контейнер будет создан. Если контейнер соответствует имени, но предоставленная конфигурация не совпадает, контейнер будет обновлён, если это возможно. Если обновление невозможно, он будет удалён и пересоздан с запрошенной конфигурацией. Версия образа будет учтена при сравнении конфигурации. Чтобы игнорировать версию образа, используйте параметр ignore_image. Используйте параметр recreate для принудительного пересоздания соответствующего контейнера. Используйте force_kill для убийства контейнера вместо остановки. Используйте keep_volumes для сохранения объёмов, связанных с удалённым контейнером.
запущен — гарантирует, что существует запущенный контейнер, соответствующий имени и любым предоставленным параметрам конфигурации. Если соответствующий контейнер отсутствует, он будет создан и запущен. Если такой контейнер найден, но конфигурация не совпадает, контейнер будет обновлён, если это возможно. Если обновление невозможно, он будет удалён, и новый контейнер будет создан с запрошенной конфигурацией и запущен. Версия образа будет учтена при сравнении конфигурации. Чтобы игнорировать версию образа, используйте параметр ignore_image. Используйте recreate для принудительного пересоздания соответствующего контейнера, даже если он запущен. Используйте restart для принудительной остановки и перезапуска соответствующего контейнера. Используйте force_kill для убийства контейнера вместо остановки. Используйте keep_volumes для сохранения объёмов, связанных с удалённым контейнером.
остановлен — гарантирует, что контейнер сначала существует, а затем, если контейнер запущен, переводит его в состояние остановки. Используйте force_kill для убийства контейнера вместо остановки. | |
| stop_signal - | Переопределяет сигнал по умолчанию, используемый для остановки контейнера. | ||
| stop_timeout - | Количество секунд ожидания остановки контейнера перед отправкой SIGKILL. | ||
| sysctls - добавлен в 2.4 | Словарь пар ключ-значение. | ||
| timeout - | Значение по умолчанию: 60 | Максимальное время в секундах ожидания ответа от API. Если значение не указано в задаче, будет использовано значение переменной окружения DOCKER_TIMEOUT.Если переменная окружения не установлена, будет использовано значение по умолчанию. | |
| tls boolean |
| Защитите соединение с API с помощью TLS без проверки подлинности сервера Docker. Если значение не указано в задаче, будет использовано значение переменной окружения DOCKER_TLS.Если переменная окружения не установлена, будет использовано значение по умолчанию. | |
| tls_hostname - | Значение по умолчанию: "localhost" | При проверке подлинности сервера Docker укажите ожидаемое имя сервера. Если значение не указано в задаче, будет использовано значение переменной окружения DOCKER_TLS_HOSTNAME.Если переменная окружения не установлена, будет использовано значение по умолчанию. | |
| tls_verify boolean |
| Защитите соединение с API с помощью TLS и проверьте подлинность сервера Docker. Если значение не указано в задаче, будет использовано значение переменной окружения DOCKER_TLS_VERIFY.Если переменная окружения не установлена, будет использовано значение по умолчанию. | |
| tmpfs - добавлен в 2.4 | Монтирует каталог tmpfs | ||
| trust_image_content boolean |
| Если yes, пропустить проверку образа. | |
| tty boolean |
| Выделить псевдо-терминал. | |
| ulimits - | Список параметров ulimit. Параметр ulimit указывается как nofile:262144:262144
| ||
| user - | Устанавливает имя пользователя или UID, а также, необязательно, имя группы или GID для указанной команды. Может быть [ имя_пользователя | имя_пользователя:имя_группы | uid | uid:gid | имя_пользователя:gid | uid:группа ] | ||
| userns_mode - added in 2.5 | Установите режим пространства имен пользователя для контейнера. В настоящее время единственное допустимое значение — host. | ||
| uts - | Установите режим пространства имен UTS для контейнера. | ||
| volume_driver - | Драйвер томов контейнера. | ||
| volumes - | Список томов для монтирования внутри контейнера. Используйте синтаксис docker CLI: /host:/container[:mode]Вы можете указать режим чтения для монтирования, используя ro или rw. SELinux-хосты могут дополнительно использовать z или Z для использования общего или частного тега для тома. | ||
| volumes_from - | Список имён или ID контейнеров, откуда следует получить тома. | ||
| working_dir - added in 2.4 | Путь к рабочей директории. | ||
Примечания
Примечание
- Подключитесь к демону 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
Возвращаемые значения
Общие возвращаемые значения описаны здесь, следующие поля уникальны для этого модуля:
| Ключ | Возвращаемое | Описание |
|---|---|---|
| docker_container словарь | всегда | До версии 2.3 это было 'ansible_docker_container', но было переименовано из-за конфликтов с плагином подключения. Факты, представляющие текущее состояние контейнера. Соответствует выводу docker inspect. Обратите внимание, что факты не являются частью зарегистрированных переменных, но к ним можно получить доступ напрямую. Пустое, если state отсутствуетЕсли 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. [сообщество]
Авторы
- Cove Schneider (@cove)
- Joshua Conner (@joshuaconner)
- Pavel Antonov (@softzilla)
- Thomas Steinbach (@ThomasSteinbach)
- Philippe Jandot (@zfil)
- Daan Oosterveld (@dusdanig)
- Chris Houseknecht (@chouseknecht)
- Kassian Sun (@kassiansun)
Подсказка
Если вы заметили какие-либо проблемы в этой документации, вы можете отредактировать этот документ, чтобы улучшить его.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.7/modules/docker_container_module.html