docker_container - управление контейнерами Docker
Новая версия с 2.1.
- Обзор
- Требования (к хосту, на котором выполняется модуль)
- Параметры
- Примеры
- Возвращаемые значения
- Примечания
Обзор
- Управление жизненным циклом контейнеров Docker.
- Поддерживает режим проверки. Запустите с флагами –check и –diff, чтобы увидеть разницу в конфигурации и список действий, которые необходимо выполнить.
Требования (к хосту, на котором выполняется модуль)
- python >= 2.6
- docker-py >= 1.7.0
- Docker API >= 1.20
Параметры
| параметр | обязательно | значение по умолчанию | выбор | комментарии |
|---|---|---|---|---|
| api_version | нет | значение по умолчанию, предоставляемое docker-py | Версия API Docker, работающего на хосте Docker. По умолчанию используется последняя версия API, поддерживаемая docker-py. псевдонимы: docker_api_version | |
| auto_remove (добавлено в 2.4)
| нет | Включить автоматическое удаление контейнера со стороны демона при завершении процесса контейнера. | ||
| blkio_weight | нет | Ввод/вывод блочных устройств (относительный вес), от 10 до 1000. | ||
| cacert_path | нет | Использовать сертификат CA при проверке сервера, указав путь к файлу сертификата CA. псевдонимы: tls_ca_cert | ||
| capabilities | нет | Список возможностей для добавления в контейнер. | ||
| cert_path | нет | Путь к файлу TLS-сертификата клиента. псевдонимы: tls_client_cert | ||
| cleanup (добавлено в 2.2)
| нет | Использовать с detach для удаления контейнера после успешного выполнения. | ||
| command | нет | Команда для выполнения при запуске контейнера. Команда может быть строкой или списком. До версии 2.4 строки разделялись запятыми. | ||
| cpu_period | нет | Ограничить период планирования CPU (Completely Fair Scheduler) | ||
| cpu_quota | нет | Ограничить квоту планирования CPU (Completely Fair Scheduler) | ||
| cpu_shares | нет | Доли CPU (относительный вес). | ||
| cpuset_cpus | нет | CPUs, в которых разрешено выполнение 1,3 или 1-3. | ||
| cpuset_mems | нет | Узлы памяти (MEM) в которых разрешено выполнение 0-3 или 0,1.
| ||
| detach | нет | True | Включить режим открепления, чтобы оставить контейнер работающим в фоновом режиме. Если отключено, задача будет отражать состояние выполнения контейнера (ошибка, если команда завершилась ошибкой). | |
| devices | нет | Список привязок устройств хоста для добавления в контейнер. Каждая привязка - сопоставление, выраженное в формате: <путь_на_хосте>:<путь_в_контейнере>:<разрешения_cgroup> | ||
| 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_url | |
| entrypoint | нет | Команда, которая перезаписывает стандартный ENTRYPOINT образа. | ||
| env | нет | Словарь пар ключ-значение. | ||
| env_file (добавлено в 2.2)
| нет | Путь к файлу, содержащему переменные окружения FOO=BAR. Если переменная также присутствует в env, то значение env будет переопределено.Требуется docker-py >= 1.4.0. | ||
| etc_hosts | нет | Словарь сопоставлений хост-IP, где каждое имя хоста является ключом в словаре. Каждое имя хоста будет добавлено в файл /etc/hosts контейнера. | ||
| exposed_ports | нет | Список дополнительных портов контейнера, которые сообщают Docker, что контейнер прослушивает указанные сетевые порты во время выполнения. Если порт уже экспонирован с помощью EXPOSE в Dockerfile, его не нужно экспонировать повторно. псевдонимы: exposed | ||
| force_kill | нет | Использовать команду kill при остановке работающего контейнера. | ||
| groups | нет | Список дополнительных имен и/или идентификаторов групп, под которыми будет выполняться процесс контейнера. | ||
| hostname | нет | Имя хоста контейнера. | ||
| ignore_image (добавлено в 2.2)
| нет | Когда state есть или запущен, модуль сравнивает конфигурацию существующего контейнера с запрошенной конфигурацией. Оценка включает версию образа. Если версия образа в реестре не соответствует контейнеру, контейнер будет пересоздан. Остановить это поведение, установив ignore_image на True. | ||
| image | нет | Путь к репозиторию и тэг, используемые для создания контейнера. Если образ не найден или pull=true, образ будет скачан из реестра. Если тэг не указан, будет использоваться 'latest'. | ||
| interactive | нет | Поддерживать stdin открытым после запуска контейнера, даже если он не присоединен. | ||
| ipc_mode | нет | Установить режим IPC для контейнера. Может быть 'container:<имя|id>' для повторного использования пространства имен IPC другого контейнера или 'host' для использования пространства имен IPC хоста внутри контейнера. | ||
| keep_volumes | нет | True | Сохранить объемы, связанные с удаленным контейнером. | |
| kernel_memory | нет | Ограничение памяти ядра (формат: <число>[<единица>]). Число - положительное целое. Единица может быть b, k, m или g. Минимальное значение 4M. | ||
| key_path | нет | Путь к файлу TLS-ключа клиента. псевдонимы: 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/ для получения подробностей. | ||
| mac_address | нет | MAC-адрес контейнера (например, 92:d0:c6:0a:29:33) | ||
| memory | нет | Ограничение памяти (формат: <число>[<единица>]). Число - положительное целое. Единица может быть b, k, m или g. | ||
| memory_reservation | нет | Мягкое ограничение памяти (формат: <число>[<единица>]). Число - положительное целое. Единица может быть b, k, m или g. | ||
| memory_swap | нет | Общее ограничение памяти (память + своп, формат:<число>[<единица>]). Число - положительное целое. Единица может быть b, k, m или g. | ||
| memory_swappiness | нет | Настройка поведения swappiness контейнера. Принимает целое число от 0 до 100. | ||
| name | да | Присвоить имя новому контейнеру или сопоставить существующий контейнер. При идентификации существующего контейнера имя может быть именем или полным или коротким идентификатором контейнера. | ||
| network_mode | нет |
| Подключить контейнер к сети. | |
| networks (добавлено в 2.2)
| нет | Список сетей, к которым принадлежит контейнер. Каждая сеть - словарь с ключами name, ipv4_address, ipv6_address, links, aliases. Для каждой сети name является обязательным, все остальные ключи - необязательны.Если включено, links или aliases являются списками.Примеры структуры данных и использования см. в примерах ниже. Для удаления контейнера из одной или нескольких сетей используйте опцию purge_networks. | ||
| oom_killer | нет | Отключить или включить OOM Killer для контейнера. | ||
| oom_score_adj (добавлено в 2.2)
| нет | Целое значение, содержащее балл, присвоенный контейнеру для настройки предпочтений OOM killer. | ||
| paused | нет | Использовать с состоянием started для приостановки запущенных процессов внутри контейнера. | ||
| pid_mode | нет | Установить режим пространства имен PID для контейнера. В настоящее время поддерживается только 'host'. | ||
| 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 | нет | Используется с состояниями present и started для принудительной пересоздания существующего контейнера. | ||
| restart | нет | Используется со статусом started для принудительной остановки и перезапуска соответствующего контейнера. | ||
| restart_policy | нет | on-failure |
| Политика перезапуска контейнера. Окружите опцию no кавычками. |
| restart_retries | нет | Используется с политикой перезапуска для управления максимальным числом попыток перезапуска. | ||
| security_opts | нет | Список параметров безопасности в формате "label:user:User".
| ||
| shm_size | нет | Размер `/dev/shm`. Формат: `<число><единица>`. `число` должно быть больше `0`. Единица необязательна и может быть `b` (байты), `k` (килобайты), `m` (мегабайты) или `g` (гигабайты). Опускание единицы по умолчанию устанавливает байты. Если размер опущен полностью, система использует `64m`. | ||
| ssl_version | нет | 1.0 | Укажите допустимое значение версии SSL. Значение по умолчанию определяется docker-py, в настоящее время 1.0. | |
| state | нет | started |
|
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 (добавлен в 2.4) | нет | Словарь пар ключ-значение. | ||
| timeout | нет | 60 | Максимальное время в секундах ожидания ответа от API. | |
| tls | нет | Защитите соединение с API с помощью TLS без проверки подлинности сервера Docker. | ||
| tls_hostname | нет | localhost | При проверке подлинности сервера Docker укажите ожидаемое имя сервера. | |
| tls_verify | нет | Защитите соединение с API с помощью TLS и проверьте подлинность сервера Docker. | ||
| tmpfs (добавлен в 2.4) | нет | Монтирование временной директории tmpfs | ||
| trust_image_content | нет | Если True, пропускается проверка изображения. | ||
| tty | нет | Выделить псевдо-терминал. | ||
| ulimits | нет | Список параметров ulimit. Параметр ulimit задается как nofile:262144:262144.
| ||
| user | нет | Устанавливает имя пользователя или UID, а также (необязательно) имя группы или GID для указанной команды. Может быть [ user | user:group | uid | uid:gid | user:gid | uid:group ] | ||
| uts | нет | Установите режим пространства имен UTS для контейнера. | ||
| volume_driver | нет | none | Драйвер томов контейнера. | |
| volumes | нет | Список томов для монтирования внутри контейнера. Используйте синтаксис docker CLI: /host:/container[:mode].
Вы можете указать режим чтения для монтирования с помощью ro или rw. SELinux хосты могут дополнительно использовать z или Z для использования общего или частного тега для тома. | ||
| volumes_from | нет | Список имен или идентификаторов контейнеров для получения томов. | ||
| working_dir (добавлен в 2.4) | нет | Путь к рабочей директории. |
Примеры
- 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 | До версии 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/": {} }, ... } |
Примечания
Примечание
- Подключитесь к демону 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/ для получения дополнительной информации.
Статус
Этот модуль помечен как предварительный просмотр, что означает, что его интерфейс не гарантируется обратной совместимости.
Для получения помощи в разработке модулей, если вы так решите, пожалуйста, прочитайте Информация о сообществе и вклад, Тестирование Ansible и Разработка модулей.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.4/docker_container_module.html