Spec-Zone.ru › Ansible 2.6

docker_container - управление контейнерами Docker

Новое в версии 2.1.

  • Обзор
    • Требования
  • Параметры
  • Примечания
  • Примеры
  • Возвращаемые значения
  • Статус
  • Техническое обслуживание
    • Автор

Обзор

  • Управление жизненным циклом контейнеров Docker.
  • Поддерживает режим проверки. Запустите с флагами –check и –diff, чтобы просмотреть разницу в конфигурации и список действий, которые нужно выполнить.

Требования

Ниже перечислены требования к хосту, на котором выполняется этот модуль.

  • python >= 2.6
  • docker-py >= 1.7.0
  • Обратите внимание, что модуль Python docker-py устарел и заменён модулем docker (подробнее см. здесь). Для Python 2.6 необходимо использовать docker-py. В противном случае рекомендуется установить модуль Python docker. Обратите внимание, что оба модуля не должны устанавливаться одновременно. Также обратите внимание, что при установке и последующем удалении одного из модулей, другой может перестать работать, и потребуется его повторная установка.
  • Docker API >= 1.20

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
api_version По умолчанию:
"auto"
Версия Docker API, работающая на Docker хосте. По умолчанию используется последняя версия API, поддерживаемая docker-py.
Если значение не указано в задаче, используется значение переменной среды DOCKER_API_VERSION. Если переменная среды не задана, используется значение по умолчанию.

псевдонимы: docker_api_version
auto_remove
bool

(добавлен в 2.4)
    Варианты:
  • no ←
  • yes
Включить автоматическое удаление контейнера на стороне демона, когда процесс контейнера завершается.
blkio_weight
Ввод/вывод блочных устройств (относительный вес), от 10 до 1000.
cacert_path
Использовать сертификат CA при проверке сервера, указав путь к файлу сертификата CA.
Если значение не указано в задаче и переменная среды DOCKER_CERT_PATH установлена, используется файл ca.pem из директории, указанной в переменной среды DOCKER_CERT_PATH.

псевдонимы: tls_ca_cert
capabilities
Список возможностей, которые нужно добавить к контейнеру.
cert_path
Путь к файлу TLS-сертификата клиента.
Если значение не указано в задаче и переменная среды DOCKER_CERT_PATH установлена, используется файл cert.pem из директории, указанной в переменной среды DOCKER_CERT_PATH.

псевдонимы: tls_client_cert
cleanup
bool

(добавлен в 2.2)
    Варианты:
  • no ←
  • yes
Использовать с detach=false для удаления контейнера после успешного выполнения.
command
Команда, которая выполняется при запуске контейнера. Команда может быть строкой или списком. До версии 2.4 строки разбивались по запятым.
cpu_period По умолчанию:
0
Ограничение периода планировщика CPU CFS (Completely Fair Scheduler)
cpu_quota По умолчанию:
0
Ограничение квоты планировщика CPU CFS (Completely Fair Scheduler)
cpu_shares
Доли CPU (относительный вес).
cpuset_cpus
Процессоры, на которых разрешено выполнение 1,3 или 1-3.
cpuset_mems
Узлы памяти (MEM) на которых разрешено выполнение 0-3 или 0,1
debug
bool
    Варианты:
  • no ←
  • yes
Режим отладки
detach
bool
    Варианты:
  • no
  • yes ←
Включить режим открепления для оставления контейнера работающим в фоновом режиме. Если отключено, задача будет отображать статус выполнения контейнера (ошибка, если команда завершилась с ошибкой).
devices
Список привязок устройств хоста, которые нужно добавить в контейнер. Каждая привязка — отображение в формате: <путь_на_хосте>:<путь_внутри_контейнера>:<разрешения_cgroup>
dns_opts
Список параметров DNS.
dns_search_domains
Список пользовательских DNS-доменных зон.
dns_servers
Список пользовательских DNS-серверов.
docker_host По умолчанию:
"unix://var/run/docker.sock"
URL или путь к Unix-сокету для подключения к Docker API. Для подключения к удалённому хосту укажите строку TCP-соединения. Например, 'tcp://192.0.2.23:2376'. Если для шифрования соединения используется TLS, модуль автоматически заменит 'tcp' в URL-адресе соединения на 'https'.
Если значение не указано в задаче, используется значение переменной среды DOCKER_HOST. Если переменная среды не задана, используется значение по умолчанию.

псевдонимы: docker_url
domainname
(добавлен в 2.5)
Доменное имя контейнера.
entrypoint
Команда, которая перезаписывает значение по умолчанию для ENTRYPOINT в образе.
env
Словарь пар ключ-значение.
env_file
(добавлен в 2.2)
Путь к файлу на целевом узле, содержащему переменные среды в формате FOO=BAR.
Если переменная также присутствует в env, то значение env будет переопределять.
etc_hosts
Словарь сопоставлений хост-IP, где имя хоста — ключ в словаре. Каждое имя хоста будет добавлено в файл /etc/hosts контейнера.
exposed_ports
Список дополнительных портов контейнера, который сообщает Docker, что контейнер прослушивает указанные сетевые порты во время выполнения. Если порт уже экспонирован с помощью EXPOSE в Dockerfile, его не нужно экспонировать снова.

псевдонимы: exposed, expose
force_kill
bool
    Варианты:
  • no ←
  • yes
Использовать команду kill при остановке работающего контейнера.

псевдонимы: forcekill
groups
Список дополнительных имен и/или идентификаторов групп, под которыми будет выполняться процесс контейнера.
hostname
Имя хоста контейнера.
ignore_image
bool

(добавлен в 2.2)
    Варианты:
  • no ←
  • yes
Когда state присутствует или запущен, модуль сравнивает конфигурацию существующего контейнера с запрошенной конфигурацией. Оценка включает версию образа. Если версия образа в реестре не соответствует контейнеру, контейнер будет пересоздан. Остановить это поведение, установив ignore_image в значение True.
image
Путь к репозиторию и тэг, используемые для создания контейнера. Если образ не найден или pull — true, образ будет скачан из реестра. Если тэг не указан, будет использоваться 'latest'.
init
bool

(добавлен в 2.6)
    Варианты:
  • no ←
  • yes
Запустить init внутри контейнера, который пересылает сигналы и собирает процессы. Этот параметр требует Docker API 1.25+.
interactive
bool
    Варианты:
  • no ←
  • yes
Поддерживать stdin открытым после запуска контейнера, даже если он не присоединён.
ipc_mode
Установить режим IPC для контейнера. Может быть 'container:<имя|id>' для повторного использования пространства имен IPC другого контейнера или 'host' для использования пространства имен IPC хоста внутри контейнера.
keep_volumes
bool
    Варианты:
  • no
  • yes ←
Сохранить объёмы, связанные с удалённым контейнером.
kernel_memory По умолчанию:
0
Ограничение памяти ядра (формат: <number>[<unit>]). Число — положительное целое число. Единица измерения может быть B (байт), K (кибибайт, 1024Б), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт). Минимальное значение 4M.
Опуская единицу измерения, используется байты по умолчанию.
key_path
Путь к файлу TLS-ключа клиента.
Если значение не указано в задаче и переменная среды DOCKER_CERT_PATH установлена, используется файл key.pem из директории, указанной в переменной среды DOCKER_CERT_PATH.

псевдонимы: tls_client_key
kill_signal
Переопределить сигнал по умолчанию для убийства работающего контейнера.
labels
Словарь пар ключ-значение.
links
Список псевдонимов имен связанных контейнеров в формате container_name:alias
log_driver
Указать драйвер ведения журнала. Docker по умолчанию использует json-file.
См. здесь для возможных вариантов.
log_options
Словарь параметров, специфичных для выбранного драйвера логирования. Подробнее см. на https://docs.docker.com/engine/admin/logging/overview/.

Псевдонимы: log_opt
mac_address
MAC-адрес контейнера (например, 92:d0:c6:0a:29:33)
memory По умолчанию:
"0"
Предел памяти (формат: <number>[<unit>]). Число — положительное целое. Единица измерения может быть B (байт), K (кибибайт, 1024 байта), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт).
Опущение единицы измерения по умолчанию означает байты.
memory_reservation По умолчанию:
0
Мягкий предел памяти (формат: <number>[<unit>]). Число — положительное целое. Единица измерения может быть B (байт), K (кибибайт, 1024 байта), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт).
Опущение единицы измерения по умолчанию означает байты.
memory_swap По умолчанию:
0
Общий предел памяти (память + своп, формат: <number>[<unit>]). Число — положительное целое. Единица измерения может быть B (байт), K (кибибайт, 1024 байта), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт).
Опущение единицы измерения по умолчанию означает байты.
memory_swappiness
Настройка поведения контейнера в отношении свопинга памяти. Принимает целое число от 0 до 100.
Если не задано, значение останется прежним, если контейнер существует, и будет унаследовано от хостовой машины, если он создается (пересоздается).
name
обязательно
Назначение имени новому контейнеру или сопоставление с существующим контейнером.
При идентификации существующего контейнера имя может быть именем или полным или коротким идентификатором контейнера.
network_mode
Подключение контейнера к сети. Доступные варианты: "bridge", "host", "none" или "container:<name|id>."
networks
(добавлено в 2.2)
Список сетей, к которым принадлежит контейнер.
Каждая сеть — это словарь с ключами name, ipv4_address, ipv6_address, links, aliases.
Для каждой сети name — обязателен, все остальные ключи — необязательны.
Если включены, links или aliases — списки.
Примеры структуры данных и использования см. в примерах ниже.
Для удаления контейнера из одной или нескольких сетей используйте параметр purge_networks.
Обратите внимание, что в отличие от docker run ..., docker_container не удаляет сеть по умолчанию, если указан networks. Для принудительного удаления сети по умолчанию (и всех других сетей, не указанных явно в networks) необходимо явно использовать purge_networks.
oom_killer
логический тип
    Варианты:
  • нет ←
  • да
Отключать ли OOM Killer для контейнера.
oom_score_adj
(добавлено в 2.2)
По умолчанию:
0
Целое значение, содержащее оценку контейнера для настройки приоритетов OOM Killer.
paused
логический тип
    Варианты:
  • нет ←
  • да
Используйте со статусом «запущен» для приостановки выполнения процессов внутри контейнера.
pid_mode
Установить режим пространства имен PID для контейнера.
Обратите внимание, что docker-py < 2.0 поддерживает только «host». Более новые версии разрешают все значения, поддерживаемые демоном Docker.
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
логический тип
    Варианты:
  • нет ←
  • да
Используйте со статусами «существующий» и «запущен» для принудительного пересоздания существующего контейнера.
restart
логический тип
    Варианты:
  • нет ←
  • да
Используйте со статусом «запущен» для принудительной остановки и перезапуска соответствующего контейнера.
restart_policy
    Варианты:
  • нет
  • при ошибке
  • всегда
  • если не остановлен
Политика перезапуска контейнера. Для параметра нет используйте кавычки.
restart_retries По умолчанию:
0
Используйте с политикой перезапуска для управления максимальным числом попыток перезапуска.
security_opts
Список параметров безопасности в формате "label:user:User"
shm_size
Размер /dev/shm (формат: <number>[<unit>]). Число — положительное целое. Единица измерения может быть B (байт), K (кибибайт, 1024 байта), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт).
Опущение единицы измерения по умолчанию означает байты. Если размер опущен полностью, система использует 64M.
ssl_version
Укажите допустимое значение версии SSL. Значение по умолчанию определяется модулем ssl.py.
Если значение не указано в задаче, будет использовано значение переменной среды DOCKER_SSL_VERSION.
state
    Choices:
  • 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
(added in 2.4)
Словарь пар ключ-значение.
timeout Default:
60
Максимальное время в секундах ожидания ответа от API.
Если значение не указано в задаче, будет использовано значение переменной окружения DOCKER_TIMEOUT. Если переменная окружения не задана, будет использовано значение по умолчанию.
tls
bool
    Choices:
  • no ←
  • yes
Защитить подключение к API с использованием TLS без проверки подлинности сервера Docker.
Если значение не указано в задаче, будет использовано значение переменной окружения DOCKER_TLS. Если переменная окружения не задана, будет использовано значение по умолчанию.
tls_hostname Default:
"localhost"
При проверке подлинности сервера Docker укажите ожидаемое имя сервера.
Если значение не указано в задаче, будет использовано значение переменной окружения DOCKER_TLS_HOSTNAME. Если переменная окружения не задана, будет использовано значение по умолчанию.
tls_verify
bool
    Choices:
  • no ←
  • yes
Защитить подключение к API с использованием TLS и проверкой подлинности сервера Docker.
Если значение не указано в задаче, будет использовано значение переменной окружения DOCKER_TLS_VERIFY. Если переменная окружения не задана, будет использовано значение по умолчанию.
tmpfs
(added in 2.4)
Монтировать каталог tmpfs
trust_image_content
bool
    Choices:
  • no ←
  • yes
Если yes, пропускается проверка образа.
tty
bool
    Choices:
  • no ←
  • yes
Выделить псевдотерминал.
ulimits
Список параметров ulimit. Ulimit задаётся как nofile:262144:262144.
user
Устанавливает имя пользователя или UID, а также необязательно имя группы или GID для указанной команды.
Может быть [ user | user:group | uid | uid:gid | user:gid | uid:group ]
userns_mode
(added in 2.5)
Используемый пользовательский пространство имен
uts
Установить режим пространства имён UTS для контейнера.
volume_driver
Драйвер томов контейнера.
volumes
Список томов для монтирования внутри контейнера.
Используйте синтаксис docker CLI: /host:/container[:mode].
Вы можете указать режим чтения для монтирования, используя ro или rw.
SELinux хосты могут дополнительно использовать z или Z для использования общего или частного метки для тома.
volumes_from
Список имён или идентификаторов контейнеров для получения томов.
working_dir
(added in 2.4)
Путь к рабочей директории.

Примечания

Примечание

  • Подключитесь к демону 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

- name: Start a container and use an env file
  docker_container:
    name: agent
    image: jenkinsci/ssh-slave
    env_file: /var/tmp/jenkins/agent.env

Значения возврата

Общие значения возврата описаны здесь, следующие — поля, уникальные для данного модуля:

Ключ Возвращаемое Описание
docker_container
dict
всегда
До версии 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/": {} }, ... }


Состояние

Этот модуль помечен как preview, что означает, что он не гарантирует обратную совместимость интерфейса.

Техническое обслуживание

Этот модуль помечен как community, что означает, что он поддерживается сообществом Ansible. Подробнее см. Поддержка и техническое обслуживание модулей.

Список других модулей, которые также поддерживаются сообществом Ansible, см. здесь.

Автор

  • Cove Schneider (@cove)
  • Joshua Conner (@joshuaconner)
  • Pavel Antonov (@softzilla)
  • Thomas Steinbach (@ThomasSteinbach)
  • Philippe Jandot (@zfil)
  • Daan Oosterveld (@dusdanig)
  • 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.6/modules/docker_container_module.html

Spec-Zone.ru

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