docker_container - управление контейнерами Docker
Введено в версии 2.1.
Краткое описание
- Управление жизненным циклом контейнеров Docker.
- Поддерживает режим проверки. Запустите с флагами –check и –diff, чтобы просмотреть разницу конфигураций и список действий, которые должны быть выполнены.
Требования
Ниже приведены требования к хосту, на котором выполняется этот модуль.
- python >= 2.6
- docker-py >= 1.7.0
- API Docker >= 1.20
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| api_version | По умолчанию: значение, предоставляемое docker-py | Версия Docker API, работающей на Docker Host. По умолчанию используется последняя версия API, поддерживаемая docker-py. алиасы: docker_api_version |
| auto_remove (добавлен в 2.4) | По умолчанию: нет | Включить автоматическое удаление контейнера на стороне демона, когда процесс контейнера завершается |
| blkio_weight | По умолчанию: None | Ввод-вывод блоков (относительный вес), от 10 до 1000. |
| cacert_path | По умолчанию: None | Использование сертификата CA при проверке сервера, указав путь к файлу сертификата CA. алиасы: tls_ca_cert |
| capabilities | По умолчанию: None | Список возможностей для добавления в контейнер. |
| cert_path | По умолчанию: None | Путь к файлу сертификата TLS клиента. алиасы: tls_client_cert |
| cleanup (добавлен в 2.2) | По умолчанию: нет | Использовать с detach=false для удаления контейнера после успешного выполнения. |
| command | По умолчанию: None | Команда для выполнения при запуске контейнера. Команда может быть строкой или списком. До версии 2.4 строки разбивались по запятым. |
| cpu_period | По умолчанию: 0 | Ограничение периода планировщика CPU CFS (Completely Fair Scheduler) |
| cpu_quota | По умолчанию: 0 | Ограничение квоты планировщика CPU CFS (Completely Fair Scheduler) |
| cpu_shares | По умолчанию: None | Участие ЦП (относительный вес). |
| cpuset_cpus | По умолчанию: None | Процессоры, в которых разрешено выполнение 1,3 или 1-3. |
| cpuset_mems | По умолчанию: None | Узлы памяти (MEM) в которых разрешено выполнение 0-3 или 0,1
|
| detach | По умолчанию: да | Включить режим открепления для оставления контейнера работающим в фоновом режиме. Если отключить, задача будет отражать состояние выполнения контейнера (ошибка, если команда завершилась ошибкой). |
| devices | По умолчанию: None | Список привязок устройств хоста для добавления в контейнер. Каждая привязка — это отображение в формате: <путь_на_хосте>:<путь_в_контейнере>:<разрешения_cgroup> |
| dns_search_domains | По умолчанию: None | Список пользовательских доменов поиска DNS. |
| dns_servers | По умолчанию: None | Список пользовательских серверов DNS. |
| docker_host | По умолчанию: unix://var/run/docker.sock | URL или путь к сокету Unix, используемый для подключения к Docker API. Для подключения к удаленному хосту укажите строку TCP-соединения. Например, 'tcp://192.0.2.23:2376'. Если для шифрования соединения используется TLS, модуль автоматически заменит 'tcp' в URL соединения на 'https'. алиасы: docker_url |
| domainname (добавлен в 2.5) | По умолчанию: None | Имя домена контейнера. |
| entrypoint | По умолчанию: None | Команда, которая перезаписывает по умолчанию ENTRYPOINT образа. |
| env | По умолчанию: None | Словарь пар ключ-значение. |
| env_file (добавлен в 2.2) | По умолчанию: None | Путь к файлу, содержащему переменные среды FOO=BAR. Если переменная также присутствует в env, тогда значение env переопределяется.Требуется docker-py >= 1.4.0. |
| etc_hosts | По умолчанию: None | Словарь сопоставлений хост-IP, где каждое имя хоста — ключ в словаре. Каждое имя хоста будет добавлено в файл /etc/hosts контейнера. |
| exposed_ports | По умолчанию: None | Список дополнительных портов контейнера, который сообщает Docker, что контейнер прослушивает указанные сетевые порты во время выполнения. Если порт уже экспонирован с помощью EXPOSE в Dockerfile, его не нужно экспонировать снова. алиасы: exposed |
| force_kill | По умолчанию: нет | Использовать команду kill при остановке работающего контейнера. |
| groups | По умолчанию: None | Список дополнительных имен групп и/или идентификаторов групп, под которыми будет выполняться процесс контейнера. |
| hostname | По умолчанию: None | Имя хоста контейнера. |
| ignore_image (добавлен в 2.2) | По умолчанию: нет | Когда state присутствует или запущен, модуль сравнивает конфигурацию существующего контейнера с запрошенной конфигурацией. Оценка включает версию образа. Если версия образа в репозитории не совпадает с контейнером, контейнер будет пересоздан. Остановить это поведение можно, установив ignore_image в True. |
| image | По умолчанию: None | Путь и тег репозитория, используемые для создания контейнера. Если образ не найден или pull равен true, образ будет загружен из репозитория. Если тег не указан, будет использоваться 'latest'. |
| interactive | По умолчанию: нет | Поддерживать stdin открытым после запуска контейнера, даже если он не присоединён. |
| ipc_mode | По умолчанию: None | Установить режим IPC для контейнера. Может быть одним из: 'container:<имя|ид>' для повторного использования пространства имен IPC другого контейнера или 'host' для использования пространства имен IPC хоста внутри контейнера. |
| keep_volumes | По умолчанию: да | Сохранить тома, связанные с удаленным контейнером. |
| kernel_memory | По умолчанию: 0 | Ограничение памяти ядра (формат: <число>[<единица>]). Число — положительное целое число. Единица может быть b, k, m или g. Минимальное значение — 4М. |
| key_path | По умолчанию: None | Путь к файлу закрытого ключа TLS клиента. алиасы: tls_client_key |
| kill_signal | По умолчанию: None | Переопределить сигнал по умолчанию, используемый для убийства работающего контейнера. |
| labels | По умолчанию: None | Словарь пар ключ-значение. |
| links | По умолчанию: None | Список псевдонимов имен для связанных контейнеров в формате container_name:alias
|
| log_driver |
None | Укажите драйвер ведения журнала. Docker по умолчанию использует json-file. |
| log_options | По умолчанию: None | Словарь опций, специфичных для выбранного log_driver. Подробнее см. https://docs.docker.com/engine/admin/logging/overview/. |
| mac_address | По умолчанию: None | MAC-адрес контейнера (например, 92:d0:c6:0a:29:33) |
| memory | По умолчанию: 0 | Ограничение памяти (формат: <число>[<единица>]). Число — положительное целое число. Единица может быть b, k, m или g |
| memory_reservation | По умолчанию: 0 | Мягкое ограничение памяти (формат: <число>[<единица>]). Число — положительное целое число. Единица может быть b, k, m или g |
| memory_swap | По умолчанию: 0 | Общее ограничение памяти (память + своп, формат:<число>[<единица>]). Число — положительное целое число. Единица может быть b, k, m или g. |
| memory_swappiness | По умолчанию: 0 | Настройка поведения контейнера в отношении памяти свопа. Принимает целое число от 0 до 100. |
| имя обязательно | Назначьте имя новому контейнеру или сопоставьте существующий контейнер. При идентификации существующего контейнера имя может быть именем или длинным или коротким идентификатором контейнера. | |
| network_mode |
None | Подключить контейнер к сети. |
| networks (добавлено в 2.2) | По умолчанию: None | Список сетей, к которым принадлежит контейнер. Каждая сеть — это словарь с ключами name, ipv4_address, ipv6_address, links, aliases. Для каждой сети name является обязательным, все остальные ключи — необязательны.Если включено, links или aliases являются списками.Примеры структуры данных и использования см. в ПРИМЕРАХ ниже. Чтобы удалить контейнер из одной или нескольких сетей, используйте опцию purge_networks. |
| oom_killer | По умолчанию: no | Включить или отключить OOM Killer для контейнера. |
| oom_score_adj (добавлено в 2.2) | По умолчанию: 0 | Целочисленное значение, содержащее балл контейнера для настройки предпочтений OOM Killer. |
| paused | По умолчанию: no | Используйте с состоянием started, чтобы приостановить выполнение процессов внутри контейнера. |
| pid_mode | По умолчанию: None | Установите режим пространства имен PID для контейнера. В настоящее время поддерживается только 'host'. |
| privileged | По умолчанию: no | Предоставить расширенные привилегии контейнеру. |
| published_ports | По умолчанию: None | Список портов для публикации из контейнера на хост. Используйте синтаксис 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, будет использоваться.псевдонимы: порты |
| pull | По умолчанию: no | Если true, всегда подтягивайте последнюю версию изображения. В противном случае, изображение будет подтягиваться только при его отсутствии. |
| purge_networks (добавлено в 2.2) | По умолчанию: no | Удалить контейнер из ВСЕХ сетей, не включенных в параметр networks.Любые сетевые настройки по умолчанию, такие как bridge, если их нет в networks, также будут удалены. |
| read_only | По умолчанию: no | Подмонтировать корневую файловую систему контейнера в режиме только для чтения. |
| recreate | По умолчанию: no | Используйте со состояниями present и started, чтобы принудительно пересоздать существующий контейнер. |
| restart | По умолчанию: no | Используйте со состоянием started, чтобы принудительно остановить и перезапустить соответствующий контейнер. |
| restart_policy |
| Политика перезапуска контейнера. Заключите в кавычки опцию no. |
| restart_retries | По умолчанию: 0 | Используйте с политикой перезапуска для управления максимальным количеством попыток перезапуска. |
| security_opts | По умолчанию: None | Список параметров безопасности в формате "label:user:User".
|
| shm_size | По умолчанию: None | Размер `/dev/shm`. Формат — `<число><единица>`. `число` должно быть больше `0`. Единица — необязательна и может быть `b` (байты), `k` (килобайты), `m` (мегабайты) или `g` (гигабайты). Опущение единицы по умолчанию равно байтам. Если вы опустите размер полностью, система использует `64m`. |
| ssl_version | По умолчанию: 1.0 | Укажите допустимую версию SSL. Значение по умолчанию определяется docker-py, в настоящее время 1.0. |
| 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 | По умолчанию: None | Переопределить используемый по умолчанию сигнал для остановки контейнера. |
| stop_timeout | По умолчанию: None | Количество секунд ожидания остановки контейнера перед отправкой SIGKILL. |
| sysctls (добавлено в 2.4) | По умолчанию: None | Словарь пар ключ-значение. |
| timeout | По умолчанию: 60 | Максимальное время в секундах ожидания ответа от API. |
| tls | По умолчанию: no | Защитить подключение к API с помощью TLS без проверки подлинности сервера Docker. |
| tls_hostname | По умолчанию: localhost | При проверке подлинности сервера Docker укажите ожидаемое имя сервера. |
| tls_verify | По умолчанию: no | Защитить подключение к API с помощью TLS и проверить подлинность сервера Docker. |
| tmpfs (добавлено в 2.4) | По умолчанию: None | Подмонтировать каталог tmpfs |
| trust_image_content | По умолчанию: no | Если true, пропустить проверку изображения. |
| tty | По умолчанию: no | Выделить псевдо-TTY. |
| ulimits | По умолчанию: None | Список опций ulimit. Ограничение задается как nofile:262144:262144.
|
| user | По умолчанию: None | Устанавливает имя пользователя или UID, а также необязательно имя группы или GID для указанной команды. Может быть [ user | user:group | uid | uid:gid | user:gid | uid:group ] |
| userns_mode (добавлено в 2.5) | По умолчанию: None | Использовать пространство имен пользователя |
| uts | По умолчанию: None | Установить режим пространства имен UTS для контейнера. |
| volume_driver | Значение по умолчанию: none | Драйвер контейнерного тома. |
| volumes | Значение по умолчанию: None | Список томов для монтирования внутри контейнера. Используйте синтаксис docker CLI: /host:/container[:mode]
Можно указать режим чтения для монтирования, используя ro или rw.Хосты SELinux могут дополнительно использовать z или Z для использования общего или частного тега для тома. |
| volumes_from | Значение по умолчанию: None | Список имён или идентификаторов контейнеров, чтобы получить тома. |
| working_dir (добавлен в 2.4) | Значение по умолчанию: None | Путь к рабочей директории. |
Примечания
Примечание
- Подключитесь к демону 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
Возвращаемые значения
Общие возвращаемые значения описаны здесь, следующие поля уникальны для данного модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| docker_container dict | всегда | До версии 2.3 это было 'ansible_docker_container', но было переименовано из-за конфликтов с плагином подключения. Факты, представляющие текущее состояние контейнера. Соответствует выводу docker inspection. Обратите внимание, что факты не являются частью зарегистрированных переменных, а доступны напрямую. Пусто, если 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/": {} }, ... } |
Статус
Этот модуль помечен как preview, что означает, что он не гарантирует обратную совместимость интерфейса.
Автор
- Cove Schneider (@cove)
- Joshua Conner (@joshuaconner)
- Pavel Antonov (@softzilla)
- Thomas Steinbach (@ThomasSteinbach)
- Philippe Jandot (@zfil)
- Daan Oosterveld (@dusdanig)
- James Tanner (@jctanner)
- 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.5/modules/docker_container_module.html