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" | Версия Docker API, работающая на Docker хосте. По умолчанию используется последняя версия API, поддерживаемая docker-py. Если значение не указано в задаче, используется значение переменной среды DOCKER_API_VERSION. Если переменная среды не задана, используется значение по умолчанию.псевдонимы: docker_api_version |
| auto_remove bool (добавлен в 2.4) |
| Включить автоматическое удаление контейнера на стороне демона, когда процесс контейнера завершается. |
| blkio_weight | Ввод/вывод блочных устройств (относительный вес), от 10 до 1000. | |
| cacert_path | Использовать сертификат CA при проверке сервера, указав путь к файлу сертификата CA. Если значение не указано в задаче и переменная среды DOCKER_CERT_PATH установлена, используется файл ca.pem из директории, указанной в переменной среды DOCKER_CERT_PATH. псевдонимы: tls_ca_cert | |
| capabilities | Список возможностей, которые нужно добавить к контейнеру. | |
| cert_path | Путь к файлу TLS-сертификата клиента. Если значение не указано в задаче и переменная среды DOCKER_CERT_PATH установлена, используется файл cert.pem из директории, указанной в переменной среды DOCKER_CERT_PATH. псевдонимы: tls_client_cert | |
| cleanup bool (добавлен в 2.2) |
| Использовать с detach=false для удаления контейнера после успешного выполнения. |
| command | Команда, которая выполняется при запуске контейнера. Команда может быть строкой или списком. До версии 2.4 строки разбивались по запятым. | |
| cpu_period | По умолчанию: 0 | Ограничение периода планировщика CPU CFS (Completely Fair Scheduler) |
| cpu_quota | По умолчанию: 0 | Ограничение квоты планировщика CPU CFS (Completely Fair Scheduler) |
| cpu_shares | Доли CPU (относительный вес). | |
| cpuset_cpus | Процессоры, на которых разрешено выполнение 1,3 или 1-3. | |
| cpuset_mems | Узлы памяти (MEM) на которых разрешено выполнение 0-3 или 0,1
| |
| debug bool |
| Режим отладки |
| detach bool |
| Включить режим открепления для оставления контейнера работающим в фоновом режиме. Если отключено, задача будет отображать статус выполнения контейнера (ошибка, если команда завершилась с ошибкой). |
| devices | Список привязок устройств хоста, которые нужно добавить в контейнер. Каждая привязка — отображение в формате: <путь_на_хосте>:<путь_внутри_контейнера>:<разрешения_cgroup> | |
| dns_opts | Список параметров DNS. | |
| dns_search_domains | Список пользовательских DNS-доменных зон. | |
| dns_servers | Список пользовательских DNS-серверов. | |
| docker_host | По умолчанию: "unix://var/run/docker.sock" | URL или путь к Unix-сокету для подключения к Docker API. Для подключения к удалённому хосту укажите строку TCP-соединения. Например, 'tcp://192.0.2.23:2376'. Если для шифрования соединения используется TLS, модуль автоматически заменит 'tcp' в URL-адресе соединения на 'https'. Если значение не указано в задаче, используется значение переменной среды DOCKER_HOST. Если переменная среды не задана, используется значение по умолчанию.псевдонимы: docker_url |
| domainname (добавлен в 2.5) | Доменное имя контейнера. | |
| entrypoint | Команда, которая перезаписывает значение по умолчанию для ENTRYPOINT в образе. | |
| env | Словарь пар ключ-значение. | |
| env_file (добавлен в 2.2) | Путь к файлу на целевом узле, содержащему переменные среды в формате FOO=BAR. Если переменная также присутствует в env, то значение env будет переопределять. | |
| etc_hosts | Словарь сопоставлений хост-IP, где имя хоста — ключ в словаре. Каждое имя хоста будет добавлено в файл /etc/hosts контейнера. | |
| exposed_ports | Список дополнительных портов контейнера, который сообщает Docker, что контейнер прослушивает указанные сетевые порты во время выполнения. Если порт уже экспонирован с помощью EXPOSE в Dockerfile, его не нужно экспонировать снова. псевдонимы: exposed, expose | |
| force_kill bool |
| Использовать команду kill при остановке работающего контейнера. псевдонимы: forcekill |
| groups | Список дополнительных имен и/или идентификаторов групп, под которыми будет выполняться процесс контейнера. | |
| hostname | Имя хоста контейнера. | |
| ignore_image bool (добавлен в 2.2) |
| Когда state присутствует или запущен, модуль сравнивает конфигурацию существующего контейнера с запрошенной конфигурацией. Оценка включает версию образа. Если версия образа в реестре не соответствует контейнеру, контейнер будет пересоздан. Остановить это поведение, установив ignore_image в значение True. |
| image | Путь к репозиторию и тэг, используемые для создания контейнера. Если образ не найден или pull — true, образ будет скачан из реестра. Если тэг не указан, будет использоваться 'latest'. | |
| init bool (добавлен в 2.6) |
| Запустить init внутри контейнера, который пересылает сигналы и собирает процессы. Этот параметр требует Docker API 1.25+. |
| interactive bool |
| Поддерживать stdin открытым после запуска контейнера, даже если он не присоединён. |
| ipc_mode | Установить режим IPC для контейнера. Может быть 'container:<имя|id>' для повторного использования пространства имен IPC другого контейнера или 'host' для использования пространства имен IPC хоста внутри контейнера. | |
| keep_volumes bool |
| Сохранить объёмы, связанные с удалённым контейнером. |
| kernel_memory | По умолчанию: 0 | Ограничение памяти ядра (формат: <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 | Словарь параметров, специфичных для выбранного драйвера логирования. Подробнее см. на 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 | По умолчанию: 0 | Мягкий предел памяти (формат: <number>[<unit>]). Число — положительное целое. Единица измерения может быть B (байт), K (кибибайт, 1024 байта), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт).Опущение единицы измерения по умолчанию означает байты. |
| memory_swap | По умолчанию: 0 | Общий предел памяти (память + своп, формат: <number>[<unit>]). Число — положительное целое. Единица измерения может быть B (байт), K (кибибайт, 1024 байта), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт).Опущение единицы измерения по умолчанию означает байты. |
| memory_swappiness | Настройка поведения контейнера в отношении свопинга памяти. Принимает целое число от 0 до 100. Если не задано, значение останется прежним, если контейнер существует, и будет унаследовано от хостовой машины, если он создается (пересоздается). | |
| name обязательно | Назначение имени новому контейнеру или сопоставление с существующим контейнером. При идентификации существующего контейнера имя может быть именем или полным или коротким идентификатором контейнера. | |
| network_mode | Подключение контейнера к сети. Доступные варианты: "bridge", "host", "none" или "container:<name|id>." | |
| networks (добавлено в 2.2) | Список сетей, к которым принадлежит контейнер. Каждая сеть — это словарь с ключами name, ipv4_address, ipv6_address, links, aliases. Для каждой сети name — обязателен, все остальные ключи — необязательны.Если включены, links или aliases — списки.Примеры структуры данных и использования см. в примерах ниже. Для удаления контейнера из одной или нескольких сетей используйте параметр purge_networks. Обратите внимание, что в отличие от docker run ..., docker_container не удаляет сеть по умолчанию, если указан networks. Для принудительного удаления сети по умолчанию (и всех других сетей, не указанных явно в networks) необходимо явно использовать purge_networks. | |
| oom_killer логический тип |
| Отключать ли OOM Killer для контейнера. |
| oom_score_adj (добавлено в 2.2) | По умолчанию: 0 | Целое значение, содержащее оценку контейнера для настройки приоритетов OOM Killer. |
| paused логический тип |
| Используйте со статусом «запущен» для приостановки выполнения процессов внутри контейнера. |
| pid_mode | Установить режим пространства имен PID для контейнера. Обратите внимание, что docker-py < 2.0 поддерживает только «host». Более новые версии разрешают все значения, поддерживаемые демоном Docker. | |
| privileged логический тип |
| Предоставление расширенных привилегий контейнеру. |
| published_ports | Список портов для публикации из контейнера на хост. Используйте синтаксис docker CLI: 8000, 9000:8000, или 0.0.0.0:9000:8000, где 8000 — порт контейнера, 9000 — порт хоста, а 0.0.0.0 — интерфейс хоста.Порты контейнера должны быть открыты либо в Dockerfile, либо с помощью параметра expose.Значение 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 логический тип |
| Если true, всегда подтягивает последнюю версию изображения. В противном случае изображение подтягивается только при отсутствии. |
| purge_networks логический тип (добавлено в 2.2) |
| Удаляет контейнер из ВСЕХ сетей, не включённых в параметр networks. Любые сети по умолчанию, такие как bridge, если они не найдены в networks, также будут удалены. |
| read_only логический тип |
| Монтирование корневой файловой системы контейнера в режиме только для чтения. |
| recreate логический тип |
| Используйте со статусами «существующий» и «запущен» для принудительного пересоздания существующего контейнера. |
| restart логический тип |
| Используйте со статусом «запущен» для принудительной остановки и перезапуска соответствующего контейнера. |
| restart_policy |
| Политика перезапуска контейнера. Для параметра нет используйте кавычки. |
| restart_retries | По умолчанию: 0 | Используйте с политикой перезапуска для управления максимальным числом попыток перезапуска. |
| 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 |
|
absent - Контейнер, соответствующий указанному имени, будет остановлен и удален. Используйте force_kill для завершения работы контейнера вместо его остановки. Используйте keep_volumes для сохранения томов, связанных с удалённым контейнером.
present - Утверждает существование контейнера, соответствующего имени и любым указанным параметрам конфигурации. Если контейнер с таким именем не найден, будет создан новый контейнер. Если контейнер с соответствующим именем найден, но предоставленная конфигурация не совпадает, контейнер будет обновлён, если это возможно. Если обновление невозможно, он будет удалён и пересоздан с запрошенной конфигурацией. При сравнении конфигурации будет учитываться версия образа. Для игнорирования версии образа используйте параметр ignore_image. Используйте recreate для принудительного пересоздания соответствующего контейнера. Используйте force_kill для завершения работы контейнера вместо его остановки. Используйте keep_volumes для сохранения томов, связанных с удалённым контейнером.
started - Утверждает, что существует запущенный контейнер, соответствующий имени и любым указанным параметрам конфигурации. Если контейнер с таким именем не найден, будет создан и запущен новый контейнер. Если контейнер с соответствующим именем найден, но конфигурация не совпадает, контейнер будет обновлён, если это возможно. Если обновление невозможно, он будет удалён, и новый контейнер будет создан с запрошенной конфигурацией и запущен. При сравнении конфигурации будет учитываться версия образа. Для игнорирования версии образа используйте параметр ignore_image. Используйте recreate для всегда пересоздания соответствующего контейнера, даже если он запущен. Используйте restart для принудительной остановки и перезапуска соответствующего контейнера. Используйте force_kill для завершения работы контейнера вместо его остановки. Используйте keep_volumes для сохранения томов, связанных с удалённым контейнером.
stopped - Утверждает, что контейнер сначала present, а затем, если контейнер запущен, переводит его в состояние остановки. Используйте force_kill для завершения работы контейнера вместо его остановки. |
| stop_signal | Переопределяет сигналы по умолчанию, используемые для остановки контейнера. | |
| stop_timeout | Количество секунд ожидания остановки контейнера перед отправкой SIGKILL. | |
| sysctls (added in 2.4) | Словарь пар ключ-значение. | |
| timeout | Default: 60 | Максимальное время в секундах ожидания ответа от API. Если значение не указано в задаче, будет использовано значение переменной окружения DOCKER_TIMEOUT. Если переменная окружения не задана, будет использовано значение по умолчанию. |
| tls bool |
| Защитить подключение к API с использованием TLS без проверки подлинности сервера Docker. Если значение не указано в задаче, будет использовано значение переменной окружения DOCKER_TLS. Если переменная окружения не задана, будет использовано значение по умолчанию. |
| tls_hostname | Default: "localhost" | При проверке подлинности сервера Docker укажите ожидаемое имя сервера. Если значение не указано в задаче, будет использовано значение переменной окружения DOCKER_TLS_HOSTNAME. Если переменная окружения не задана, будет использовано значение по умолчанию. |
| tls_verify bool |
| Защитить подключение к API с использованием TLS и проверкой подлинности сервера Docker. Если значение не указано в задаче, будет использовано значение переменной окружения DOCKER_TLS_VERIFY. Если переменная окружения не задана, будет использовано значение по умолчанию. |
| tmpfs (added in 2.4) | Монтировать каталог tmpfs | |
| trust_image_content bool |
| Если yes, пропускается проверка образа. |
| tty bool |
| Выделить псевдотерминал. |
| ulimits | Список параметров ulimit. Ulimit задаётся как nofile:262144:262144.
| |
| user | Устанавливает имя пользователя или UID, а также необязательно имя группы или GID для указанной команды. Может быть [ user | user:group | uid | uid:gid | user:gid | uid:group ] | |
| userns_mode (added in 2.5) | Используемый пользовательский пространство имен | |
| uts | Установить режим пространства имён UTS для контейнера. | |
| volume_driver | Драйвер томов контейнера. | |
| volumes | Список томов для монтирования внутри контейнера. Используйте синтаксис docker CLI: /host:/container[:mode].
Вы можете указать режим чтения для монтирования, используя ro или rw.
SELinux хосты могут дополнительно использовать z или Z для использования общего или частного метки для тома. | |
| volumes_from | Список имён или идентификаторов контейнеров для получения томов. | |
| 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.org/en/stable/machine/.
Примеры
- 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
- 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
Значения возврата
Общие значения возврата описаны здесь, следующие — поля, уникальные для данного модуля:
| Ключ | Возвращаемое | Описание |
|---|---|---|
| docker_container dict | всегда | До версии 2.3 это было 'ansible_docker_container', но было переименовано из-за конфликтов с плагином подключения. Факты, представляющие текущее состояние контейнера. Соответствует выводу docker inspection. Обратите внимание, что факты не являются частью зарегистрированных переменных, но к ним можно получить доступ напрямую. Пусто, если 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/": {} }, ... } |
Состояние
Этот модуль помечен как preview, что означает, что он не гарантирует обратную совместимость интерфейса.
Техническое обслуживание
Этот модуль помечен как community, что означает, что он поддерживается сообществом Ansible. Подробнее см. Поддержка и техническое обслуживание модулей.
Список других модулей, которые также поддерживаются сообществом 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.6/modules/docker_container_module.html