docker - управление контейнерами docker
Новое в версии 1.4.
УСТАРЕВШЕ
В версии 2.2 используйте docker_container и docker_image вместо этого.
Описание
- Это исходный модуль Ansible для управления жизненным циклом контейнеров Docker.
- ПРИМЕЧАНИЕ: Доступны дополнительные и более новые модули. Последние сведения об оркестрации контейнеров с помощью Ansible см. в нашем руководстве по Docker Getting Started на https://github.com/ansible/ansible/blob/devel/docs/docsite/rst/guide_docker.rst.
Требования (к хосту, на котором выполняется модуль)
- python >= 2.6
- docker-py >= 0.3.0
- Сервер docker >= 0.10.0
Параметры
| параметр | обязательный | по умолчанию | выбор | комментарии |
|---|---|---|---|---|
| cap_add (добавлен в 2.0)
| нет | Добавить возможности для контейнера. Требуется docker-py >= 0.5.0. | ||
| cap_drop (добавлен в 2.0)
| нет | Удалить возможности для контейнера. Требуется docker-py >= 0.5.0. | ||
| command | нет | Команда, используемая для сопоставления и запуска контейнеров. | ||
| count | нет | 1 | Количество совпадающих контейнеров, которые должны быть в нужном состоянии. | |
| cpu_set (добавлен в 2.0)
| нет | Процессоры, в которых разрешено выполнение. Требуется docker-py >= 0.6.0. | ||
| cpu_shares (добавлен в 2.1)
| нет | CPU-доли (относительный вес). Требуется docker-py >= 0.6.0. | ||
| detach | нет | True | Включить режим отсоединения для запуска контейнера в фоновом режиме. Если отключено, произойдет ошибка, если процесс не завершится успешно. | |
| devices (добавлен в 2.1)
| нет | Список устройств хоста, которые нужно экспонировать для контейнера | ||
| dns | нет | Список пользовательских DNS-серверов для контейнера. | ||
| docker_api_version (добавлен в 1.8)
| нет | доменное значение docker-py удаленного API | Версия удаленного API для использования. По умолчанию используется текущее значение по умолчанию, указанное docker-py. | |
| docker_url | нет | ${DOCKER_HOST} или unix://var/run/docker.sock | URL хоста, на котором выполняется демон docker. По умолчанию используется переменная окружения DOCKER_HOST, если не указано другое. | |
| docker_user (добавлен в 2.0)
| нет | Имя пользователя или UID для использования внутри контейнера | ||
| domainname | нет | Имя домена контейнера. | ||
| email | нет | Электронная почта удаленного API. | ||
| entrypoint (добавлен в 2.1)
| нет | Соответствует параметру ``--entrypoint`` команды ``docker run`` и директиве ``ENTRYPOINT`` файла Dockerfile. Используется для сопоставления и запуска контейнеров. | ||
| env | нет | Передать контейнеру словарь переменных среды. | ||
| env_file (добавлен в 2.1)
| нет | Передать путь к файлу с переменными среды (FOO=BAR). Если ключ значение присутствует как в явно указанном (т.е. в 'env'), так и в файле среды, явное значение переопределяет. Требуется docker-py >= 1.4.0. | ||
| expose (добавлен в 1.5)
| нет | Список дополнительных портов контейнера для экспонирования для сопоставления портов или ссылок. Если порт уже экспонирован с помощью EXPOSE в файле Dockerfile, его не нужно экспонировать снова. | ||
| extra_hosts (добавлен в 2.0)
| нет | Словарь пользовательских сопоставлений хост-IP, которые нужно определить в контейнере | ||
| hostname | нет | Имя хоста контейнера. | ||
| image | да | Изображение контейнера, используемое для сопоставления и запуска контейнеров. | ||
| insecure_registry (добавлен в 1.9)
| нет | Использовать небезопасный частный реестр по HTTP вместо HTTPS. Необходимо для docker-py >= 0.5.0. | ||
| labels (добавлен в 2.1)
| нет | Установить метки контейнера. Требуется docker >= 1.6 и docker-py >= 1.2.0. | ||
| links (добавлен в 1.5)
| нет | Список других контейнеров для связывания внутри этого контейнера с необязательным псевдонимом. Используйте синтаксис docker CLI: redis:myredis. | ||
| log_driver (добавлен в 2.0)
| нет | json-file |
| Можно указать другой драйвер ведения журнала для контейнера, чем для демона. "json-file" Драйвер ведения журнала по умолчанию для Docker. Записывает JSON-сообщения в файл. Команда docker logs доступна только для этого драйвера ведения журнала. "none" отключает ведение журнала для контейнера. "syslog" Драйвер ведения журнала Syslog для Docker. Записывает сообщения журнала в syslog. Команда docker logs недоступна для этого драйвера ведения журнала. "journald" Драйвер ведения журнала Journald для Docker. Записывает сообщения журнала в "journald". "gelf" Драйвер ведения журнала Graylog Extended Log Format (GELF) для Docker. Записывает сообщения журнала в конечную точку GELF, например Graylog или Logstash. "fluentd" Драйвер ведения журнала Fluentd для Docker. Записывает сообщения журнала в "fluentd" (входные данные). "awslogs" (добавлен в 2.1) Драйвер ведения журнала Awslogs для Docker. Записывает сообщения журнала в AWS Cloudwatch Logs. Если явно не определено, применяется значение по умолчанию демона Docker ("json-file"). Требуется docker >= 1.6.0. |
| log_opt (добавлен в 2.0)
| нет | Дополнительные параметры для передачи выбранному выше драйверу ведения журнала. См. документацию Docker `log-driver <https://docs.docker.com/reference/logging/overview/>` для получения дополнительной информации. Требуется docker >=1.7.0. | ||
| lxc_conf | нет | Параметры конфигурации LXC, такие как lxc.aa_profile:unconfined. | ||
| memory_limit | нет | ОЗУ, выделенное контейнеру, как число байтов или как читаемая строка, например "512MB". Оставьте "0", чтобы указать отсутствие ограничения. | ||
| name (добавлен в 1.5)
| нет | Имя, используемое для сопоставления и уникального именования запущенных контейнеров. Явные имена используются для уникальной идентификации одного контейнера или для связывания контейнеров. Взаимоисключающее с "count", отличным от "1". | ||
| net (добавлен в 1.8)
| нет | Режим сети для запущенного контейнера: bridge, none, container:<name|id> или host. Требуется docker >= 0.11. | ||
| password | нет | Пароль удаленного API. | ||
| pid (добавлен в 1.9)
| нет | None | Установить режим пространства имен PID для контейнера (в настоящее время поддерживается только 'host'). Требуется docker-py >= 1.0.0 и docker >= 1.5.0 | |
| ports (добавлен в 1.5)
| нет | Список, содержащий спецификацию сопоставления частного и публичного порта. Используйте синтаксис docker 'CLI: 8000, 9000:8000, или 0.0.0.0:9000:8000, где 8000 - порт контейнера, 9000 - порт хоста, а 0.0.0.0 - интерфейс хоста. Порты контейнера должны быть экспонированы либо в Dockerfile, либо с помощью параметра expose. | ||
| privileged | нет | Нужно ли контейнеру запускаться в привилегированном режиме. | ||
| publish_all_ports (добавлен в 1.5)
| нет | Опубликовать все экспонированные порты на интерфейсы хоста. | ||
| pull (добавлен в 1.9)
| нет | missing |
| Управление тем, когда изображения контейнеров обновляются из реестра docker_url. Если "missing", изображения будут скачиваться только при отсутствии на хосте; если '"always," реестр будет проверяться на наличие новой версии изображения' каждый раз при выполнении задачи. |
| read_only (добавлен в 2.0)
| нет | Монтировать корневую файловую систему контейнера в режиме только для чтения | ||
| registry (добавлен в 1.8)
| нет | DockerHub | URL удаленного реестра для скачивания изображений. | |
| restart_policy (добавлен в 1.9)
| нет |
| Политика перезапуска контейнера. Выбор 'unless-stopped' доступен только начиная с Ansible 2.1 и для Docker 1.9 и выше. | |
| restart_policy_retry (добавлен в 1.9)
| нет | Максимальное количество попыток перезапуска контейнера. Оставьте "0" для неограниченных повторов. | ||
| signal (добавлен в 2.0)
| нет | KILL | При состоянии "killed", можно изменить отправляемый контейнеру сигнал. | |
| state | нет | started |
| Утверждение желаемого состояния контейнера. "present" только утверждает, что совпадающие контейнеры существуют. "started" утверждает, что совпадающие контейнеры существуют и работают, но не предпринимает никаких действий, если какая-либо конфигурация изменилась. "reloaded" (добавлен в Ansible 1.9) утверждает, что все совпадающие контейнеры работают и перезапускает те, у которых есть изображения или конфигурация неактуальна. "restarted" безусловно перезапускает (или запускает) совпадающие контейнеры. "stopped" и '"killed" останавливают и убивают все совпадающие контейнеры. "absent" останавливает и затем удаляет все совпадающие контейнеры. |
| stdin_open (добавлен в 1.6)
| нет | Поддерживать stdin открытым после запуска контейнера. | ||
| stop_timeout (добавлен в 2.0)
| нет | 10 | Сколько секунд ждать остановки контейнера перед его убийством. | |
| timeout (добавлен в 2.1)
| нет | 60 | Тайм-аут ответа демона Docker в секундах. |
| tls_ca_cert (добавлено в 1.9)
| нет | ${DOCKER_CERT_PATH}/ca.pem | Путь к PEM-кодированному сертификату центра сертификации для защиты подключения Docker. Это не имеет эффекта, если use_tls равен encrypt. | |
| tls_client_cert (добавлено в 1.9)
| нет | ${DOCKER_CERT_PATH}/cert.pem | Путь к PEM-кодированному сертификату, используемому для проверки подлинности клиента docker. Если указан, tls_client_key должен быть действительным | |
| tls_client_key (добавлено в 1.9)
| нет | ${DOCKER_CERT_PATH}/key.pem | Путь к PEM-кодированному ключу, используемому для проверки подлинности клиента docker. Если указан, tls_client_cert должен быть действительным | |
| tls_hostname (добавлено в 1.9)
| нет | Взято из docker_url | Имя хоста для проверки соответствия предоставленному в сертификате сервера docker. Если не указано, имя хоста берется из docker_url. | |
| tty (добавлено в 1.6)
| нет | Выделить псевдотерминал внутри контейнера. | ||
| ulimits (добавлено в 2.1)
| нет | ulimits, список ulimits с именем, мягким и необязательным жестким лимитом, разделенными двоеточиями. Например, nofile:1024:2048 Требуется docker-py >= 1.2.0 и docker >= 1.6.0 | ||
| use_tls (добавлено в 1.9)
| нет |
| Использовать tls для подключения к серверу docker. «нет» означает, что tls не использовать (и игнорировать любые другие параметры tls). «encrypt» означает использовать tls для шифрования подключения к серверу. «verify» означает также проверять, что сертификат сервера действителен для сервера (это проверяет сертификат по отношению к CA и то, что сертификат был выпущен для этого хоста. Если это не указано, tls будет использоваться только в том случае, если один из других параметров tls требует этого. | |
| username | нет | Имя пользователя удаленного API. | ||
| volumes | нет | Список томов для монтирования в контейнере Используйте синтаксис docker CLI: /host:/container[:mode]
Вы можете указать режим чтения для монтирования с помощью ro или rw. Начиная с версии 2.1, хосты SELinux могут дополнительно использовать z или Z параметры монтирования, чтобы использовать общий или частный тег для тома. | ||
| volumes_from | нет | Список имен контейнеров для монтирования томов. |
Примеры
# Containers are matched either by name (if provided) or by an exact match of
# the image they were launched with and the command they're running. The module
# can accept either a name to target a container uniquely, or a count to operate
# on multiple containers at once when it makes sense to do so.
# Ensure that a data container with the name "mydata" exists. If no container
# by this name exists, it will be created, but not started.
- name: data container
docker:
name: mydata
image: busybox
state: present
volumes:
- /data
# Ensure that a Redis server is running, using the volume from the data
# container. Expose the default Redis port.
- name: redis container
docker:
name: myredis
image: redis
command: redis-server --appendonly yes
state: started
expose:
- 6379
volumes_from:
- mydata
# Ensure that a container of your application server is running. This will:
# - pull the latest version of your application image from DockerHub.
# - ensure that a container is running with the specified name and exact image.
# If any configuration options have changed, the existing container will be
# stopped and removed, and a new one will be launched in its place.
# - link this container to the existing redis container launched above with
# an alias.
# - grant the container read write permissions for the host's /dev/sda device
# through a node named /dev/xvda
# - bind TCP port 9000 within the container to port 8080 on all interfaces
# on the host.
# - bind UDP port 9001 within the container to port 8081 on the host, only
# listening on localhost.
# - specify 2 ip resolutions.
# - set the environment variable SECRET_KEY to "ssssh".
- name: application container
docker:
name: myapplication
image: someuser/appimage
state: reloaded
pull: always
links:
- "myredis:aliasedredis"
devices:
- "/dev/sda:/dev/xvda:rwm"
ports:
- "8080:9000"
- "127.0.0.1:8081:9001/udp"
extra_hosts:
host1: "192.168.0.1"
host2: "192.168.0.2"
env:
SECRET_KEY: ssssh
# Ensure that exactly five containers of another server are running with this
# exact image and command. If fewer than five are running, more will be launched;
# if more are running, the excess will be stopped.
- name: load-balanced containers
docker:
state: reloaded
count: 5
image: someuser/anotherappimage
command: sleep 1d
# Unconditionally restart a service container. This may be useful within a
# handler, for example.
- name: application service
docker:
name: myservice
image: someuser/serviceimage
state: restarted
# Stop all containers running the specified image.
- name: obsolete container
docker:
image: someuser/oldandbusted
state: stopped
# Stop and remove a container with the specified name.
- name: obsolete container
docker:
name: ohno
image: someuser/oldandbusted
state: absent
# Example Syslogging Output
- name: myservice container
docker:
name: myservice
image: someservice/someimage
state: reloaded
log_driver: syslog
log_opt:
syslog-address: tcp://my-syslog-server:514
syslog-facility: daemon
syslog-tag: myservice
Для получения помощи в разработке модулей, если вы заинтересованы, пожалуйста, прочитайте Информацию и сотрудничество сообщества, Тестирование 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_module.html