Spec-Zone.ru › Ansible 2.4

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
нет
  • none
  • json-file
  • syslog
  • journald
  • gelf
  • fluentd
  • awslogs
  • splunk
Укажите драйвер ведения журнала. 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
нет
  • bridge
  • container:
  • host
  • none
Подключить контейнер к сети.
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
  • always
  • False
  • on-failure
  • unless-stopped
Политика перезапуска контейнера. Окружите опцию 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
  • 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
нет
Переопределение сигнала по умолчанию для остановки контейнера.
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

Spec-Zone.ru

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