docker - управление контейнерами Docker
Новая версия с 1.4.
УСТЕРЕКС
| Удалено в Ansible: | |
|---|---|
| версия: 2.4 | |
| Почему: | Заменено специализированными модулями. |
| Альтернатива: | Используйте docker_container и docker_image вместо этого. |
Описание
- Это исходный модуль Ansible для управления жизненным циклом контейнера Docker.
- ПРИМЕЧАНИЕ - Доступны дополнительные и более новые модули. Для получения последних данных об оркестрации контейнеров с помощью Ansible посетите нашу Руководство по началу работы с Docker.
Требования
Ниже приведены требования, которые необходимы на хосте, на котором выполняется этот модуль.
- 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) | Значение по умолчанию: 0 | CPU-доли (относительный вес). Требуется docker-py >= 0.6.0. |
| detach |
| Включить режим отсоединения, чтобы оставить контейнер работающим в фоновом режиме. Если отключено, произойдет ошибка, если процесс не завершится правильно. |
| devices (добавлен в 2.1) | Список устройств хоста, которые нужно экспонировать для контейнера. | |
| dns | Список пользовательских DNS-серверов для контейнера. | |
| docker_api_version (добавлен в 1.8) | Значение по умолчанию: стандартная версия удаленного API docker-py | Версия удаленного API, которую нужно использовать. По умолчанию используется текущая версия по умолчанию, указанная в docker-py. |
| docker_url | Значение по умолчанию: ${DOCKER_HOST} или unix://var/run/docker.sock | URL хоста, на котором запущен демон docker. По умолчанию используется переменная среды DOCKER_HOST, если не указано иное. |
| docker_user (добавлен в 2.0) | Имя пользователя или UID для использования внутри контейнера | |
| domainname | Имя домена контейнера. | |
| Адрес электронной почты удаленного 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) |
| Можно указать другой драйвер логирования для контейнера, чем для демона. awslogs - (добавлен в 2.1) Драйвер логирования Awslogs для Docker. Записывает сообщения журнала в AWS Cloudwatch Logs.fluentd - Драйвер логирования Fluentd для Docker. Записывает сообщения журнала в "fluentd" (входящие данные).gelf - Драйвер логирования Graylog Extended Log Format (GELF) для Docker. Записывает сообщения журнала в конечную точку GELF, например, Graylog или Logstash.journald - Драйвер логирования Journald для Docker. Записывает сообщения журнала в "journald".json-file - По умолчанию драйвер логирования для Docker. Записывает сообщения JSON в файл. Команда docker logs доступна только для этого драйвера логирования.none - отключает любое логирование для контейнера.syslog - Драйвер логирования Syslog для Docker. Записывает сообщения журнала в syslog. Команда docker logs недоступна для этого драйвера логирования.Требуется 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 | Значение по умолчанию: 0 | ОЗУ, выделенное контейнеру в виде числа байт или в удобочитаемом формате, например, "512МБ". Оставьте "0", чтобы не задавать ограничения. |
| name (добавлен в 1.5) | Имя, используемое для сопоставления и уникального именования запущенных контейнеров. Явные имена используются для уникальной идентификации одного контейнера или для связей между контейнерами. Взаимоисключающее с "count", отличным от "1". | |
| net (добавлен в 1.8) |
| Режим сети для запущенного контейнера: bridge, none, container:<имя|id> или host. Требуется docker >= 0.11. |
| password | Пароль удаленного API. | |
| pid (добавлен в 1.9) | Установить режим пространства имен 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) |
| Управление тем, когда образы контейнеров обновляются из реестра 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 (added in 1.9) | Default: 0 | Максимальное количество попыток перезапуска контейнера. Оставьте значение "0" для неограниченного количества попыток. |
| signal (added in 2.0) | Default: KILL | При состоянии "killed" можно изменить сигнал, отправленный контейнеру. |
| state |
| Утверждение желаемого состояния контейнера. "present" только утверждает, что соответствующие контейнеры существуют. "started" утверждает, что соответствующие контейнеры существуют и работают, но не предпринимает никаких действий, если какая-либо конфигурация изменилась. "reloaded" (добавлено в Ansible 1.9) утверждает, что все соответствующие контейнеры работают и перезапускает любые, у которых обновлены изображения или конфигурация. "restarted" безусловно перезапускает (или запускает) соответствующие контейнеры. "stopped" и '"killed" останавливают и убивают все соответствующие контейнеры. "absent" останавливает и удаляет все соответствующие контейнеры. |
| stdin_open (added in 1.6) |
| Поддерживать stdin открытым после запуска контейнера. |
| stop_timeout (added in 2.0) | Default: 10 | Количество секунд ожидания остановки контейнера перед его уничтожением. |
| timeout (added in 2.1) | Default: 60 | Таймаут ответа демона Docker в секундах. |
| tls_ca_cert (added in 1.9) | Default: ${DOCKER_CERT_PATH}/ca.pem | Путь к PEM-кодированному сертификату центров сертификации для защиты подключения Docker. Это не имеет эффекта, если use_tls равен encrypt. |
| tls_client_cert (added in 1.9) | Default: ${DOCKER_CERT_PATH}/cert.pem | Путь к PEM-кодированному сертификату, используемому для аутентификации клиента Docker. Если указан tls_client_key, он должен быть действительным. |
| tls_client_key (added in 1.9) | Default: ${DOCKER_CERT_PATH}/key.pem | Путь к PEM-кодированному ключу, используемому для аутентификации клиента Docker. Если указан tls_client_cert, он должен быть действительным. |
| tls_hostname (added in 1.9) | Default: Получено из docker_url | Имя хоста для проверки соответствия предоставленному в сертификате сервера Docker. Если не указано, имя хоста берется из docker_url. |
| tty (added in 1.6) |
| Выделить псевдотерминал внутри контейнера. |
| ulimits (added in 2.1) | ulimits, список ограничений с именем, мягким и, необязательно, жестким лимитом, разделенными двоеточиями. Пример: nofile:1024:2048
Требуется docker-py >= 1.2.0 и docker >= 1.6.0 | |
| use_tls (added in 1.9) |
| Использовать TLS для подключения к серверу Docker. "no" - не использовать TLS (и игнорировать другие параметры, связанные с TLS). "encrypt" - использовать TLS для шифрования подключения к серверу. "verify" - также проверить, что сертификат сервера действителен для сервера (это проверяет сертификат по отношению к центру сертификации и то, что сертификат выдан для этого хоста. Если не указано, 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
Статус
Этот модуль помечен как устаревший и будет удален в версии 2.4. Дополнительную информацию см. в УСТАРЕВШИЕ.
Автор
- Cove Schneider (@cove)
- Joshua Conner (@joshuaconner)
- Pavel Antonov (@softzilla)
- Thomas Steinbach (@ThomasSteinbach)
- Philippe Jandot (@zfil)
- Daan Oosterveld (@dusdanig)
Подсказка
Если вы заметите какие-либо проблемы в этом документе, вы можете отредактировать этот документ, чтобы улучшить его.
© 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_module.html