Spec-Zone.ru › Ansible 2.5

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
  • json-file
  • syslog
  • journald
  • gelf
  • fluentd
  • awslogs
  • splunk
По умолчанию:
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
    Варианты:
  • bridge
  • container:<имя|id>
  • host
  • none
По умолчанию:
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
    Варианты:
  • always
  • no
  • on-failure ←
  • unless-stopped
Политика перезапуска контейнера. Заключите в кавычки опцию 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
  • present
  • stopped
  • 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 По умолчанию:
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API