Spec-Zone.ru › Ansible

Руководство по Docker

Коллекция community.docker предоставляет несколько модулей и плагинов для оркестрации контейнеров Docker и Docker Swarm.

  • Требования
  • Подключение к API Docker
  • Обычный демон Docker: образы, сети, тома и контейнеры
  • Docker Compose
  • Docker Machine
  • Стек Docker Swarm
  • Docker Swarm

Требования

Для большинства модулей и плагинов в community.docker требуется Docker SDK for Python. SDK необходимо установить на машины, где выполняются модули и плагины, а также для версий Python, с которыми выполняются модули и плагины. Чтобы убедиться, что Docker SDK for Python установлен на нужной машине и для версии Python, используемой Ansible, можно воспользоваться модулем community.general.python_requirements_info.

Обратите внимание, что плагины (плагины инвентаризации и подключения) всегда выполняются в контексте самого Ansible. Если вы используете плагин, которому требуется Docker SDK for Python, его необходимо установить на машину, где выполняется ansible или ansible-playbook, и для того же интерпретатора Python, который использует Ansible. Чтобы узнать, какой Python используется, выполните ansible --version.

Docker SDK for Python для Python 3.6 или более поздней версии можно установить следующим образом:

$ pip install docker

Для Python 2.7 необходимо использовать версию от 2.0.0 до 4.4.4, поскольку в версии 5.0.0 пакет Python для Docker перестал поддерживать Python 2.7. Установить конкретную версию Docker SDK for Python можно следующим образом:

$ pip install 'docker==4.4.4'

Обратите внимание, что до версии 2.0.0 Docker SDK for Python назывался docker-py на PyPi. Не устанавливайте эту очень старую версию и следите за тем, чтобы не устанавливать одновременно docker и docker-py. Установка обоих пакетов приведёт к повреждению установки. Если это произошло, Ansible обнаружит проблему и сообщит о ней. В таком случае необходимо удалить оба пакета и установить правильную версию. Если сомневаетесь, всегда устанавливайте docker и никогда не устанавливайте docker-py.

Подключение к API Docker

Подключиться к локальному или удалённому API можно с помощью параметров, передаваемых каждой задаче, или задав переменные окружения. Приоритет имеют параметры командной строки, а затем переменные окружения. Если параметр командной строки или переменная окружения не заданы, Ansible использует значение по умолчанию, указанное в разделе Параметры.

Параметры

Большинство плагинов и модулей можно настроить с помощью следующих параметров:

docker_host

URL или путь к сокету Unix, используемый для подключения к API Docker. По умолчанию — unix:///var/run/docker.sock. Для подключения к удалённому хосту укажите строку TCP-подключения (например: tcp://192.0.2.23:2376). Если для шифрования подключения к API используется TLS, модуль автоматически заменит tcp в URL подключения на https.

api_version

Версия API Docker, работающего на хосте Docker. По умолчанию используется последняя версия API, поддерживаемая установленным Docker SDK for Python.

timeout

Максимальное время ожидания ответа API в секундах. По умолчанию — 60 секунд.

tls

Защищает подключение к API с помощью TLS без проверки подлинности сервера хоста Docker. По умолчанию — false.

validate_certs

Защищает подключение к API с помощью TLS и проверяет подлинность сервера хоста Docker. По умолчанию — false.

ca_path

Используйте сертификат центра сертификации при проверке сервера, указав путь к файлу сертификата центра сертификации.

cert_path

Путь к файлу клиентского TLS-сертификата.

key_path

Путь к файлу клиентского TLS-ключа.

tls_hostname

При проверке подлинности сервера хоста Docker укажите ожидаемое имя сервера. По умолчанию — localhost.

ssl_version

Укажите допустимый номер версии SSL. Значение по умолчанию определяется Docker SDK for Python.

Этот параметр недоступен для плагинов на основе CLI. В основном он требуется для устаревших систем, поэтому его следует избегать.

Группа параметров модуля по умолчанию

Чтобы не указывать общие параметры для всех модулей в каждой задаче, можно использовать community.docker.docker группу параметров модуля по умолчанию или её краткое имя docker.

Примечание

Группы параметров модуля по умолчанию работают только для модулей, но не для плагинов (плагинов подключения и инвентаризации).

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

---
- name: Pull image and start the container
  hosts: localhost
  gather_facts: false
  module_defaults:
    group/community.docker.docker:
      # Select Docker Daemon on other host
      docker_host: tcp://192.0.2.23:2376
      # Configure TLS
      tls: true
      validate_certs: true
      tls_hostname: docker.example.com
      ca_path: /path/to/cacert.pem
      # Increase timeout
      timeout: 120
  tasks:
    - name: Pull image
      community.docker.docker_image_pull:
        name: python
        tag: 3.12

    - name: Start container
      community.docker.docker_container:
        cleanup: true
        command: python --version
        detach: false
        image: python:3.12
        name: my-python-container
        output_logs: true

    - name: Show output
      ansible.builtin.debug:
        msg: "{{ output.container.Output }}"

Здесь в двух задачах community.docker будут использоваться параметры, заданные для группы параметров модуля по умолчанию.

Переменные окружения

Также можно управлять тем, как плагины и модули подключаются к API Docker, задав следующие переменные окружения.

Для плагинов их необходимо задать в окружении, в котором работает сам Ansible. Для модулей их необходимо задать в окружении, в котором выполняются модули. Если модули выполняются на удалённых машинах, переменные окружения необходимо задать на этой машине для пользователя, от имени которого выполняются модули.

DOCKER_HOST

URL или путь к сокету Unix, используемый для подключения к API Docker.

DOCKER_API_VERSION

Версия API Docker, работающего на хосте Docker. По умолчанию используется последняя версия API, поддерживаемая Docker SDK for Python.

DOCKER_TIMEOUT

Максимальное время ожидания ответа API в секундах.

DOCKER_CERT_PATH

Путь к каталогу, содержащему клиентский сертификат, клиентский ключ и сертификат центра сертификации.

DOCKER_SSL_VERSION

Укажите допустимый номер версии SSL.

DOCKER_TLS

Защищает подключение к API с помощью TLS без проверки подлинности хоста Docker.

DOCKER_TLS_HOSTNAME

При проверке подлинности хоста Docker использует это имя узла для сравнения с сертификатом хоста.

DOCKER_TLS_VERIFY

Защищает подключение к API с помощью TLS и проверяет подлинность хоста Docker.

Обычный демон Docker: образы, сети, тома и контейнеры

Для работы с обычным демоном Docker, то есть без Swarm, доступны плагины подключения, плагин инвентаризации и несколько модулей:

плагин подключения docker

Плагин подключения community.docker.docker использует утилиту Docker CLI для подключения к контейнерам Docker и выполнения в них модулей. По сути, он оборачивает docker exec и docker cp. Этот плагин подключения поддерживается модулем ansible.posix.synchronize.

плагин подключения docker_api

Плагин подключения community.docker.docker_api напрямую взаимодействует с демоном Docker для подключения к контейнерам Docker и выполнения в них модулей.

плагин инвентаризации docker_containers

Плагин инвентаризации community.docker.docker_containers позволяет динамически добавлять контейнеры Docker из демона Docker в инвентаризацию Ansible. Подробнее о динамической инвентаризации см. в разделе Работа с динамической инвентаризацией.

Сценарий инвентаризации docker объявлен устаревшим. Вместо него используйте плагин инвентаризации. В плагине инвентаризации предусмотрено несколько параметров совместимости. Если необходимо собирать контейнеры Docker с нескольких демонов Docker, добавьте каждый демон Docker в качестве отдельного источника инвентаризации.

модуль docker_host_info

Модуль community.docker.docker_host_info позволяет получать сведения о демоне Docker, например обо всех контейнерах, образах, томах, сетях и т. д.

модуль docker_login

Модуль community.docker.docker_login позволяет входить в удалённый реестр и выходить из него, например из Docker Hub или частного реестра. Он обеспечивает функциональность, аналогичную командам CLI docker login и docker logout.

модуль docker_prune

Модуль community.docker.docker_prune позволяет удалять больше не нужные контейнеры, образы, тома и т. д. Он обеспечивает функциональность, аналогичную команде CLI docker prune.

модуль docker_image

Модуль community.docker.docker_image обеспечивает полный контроль над образами, включая сборку, загрузку, отправку, присвоение тегов и удаление.

docker_image_build

Модуль community.docker.docker_image_build позволяет собирать образ Docker с помощью Docker buildx.

модуль docker_image_export

Модуль community.docker.docker_image_export позволяет экспортировать (архивировать) образы.

модуль docker_image_info

Модуль community.docker.docker_image_info позволяет просматривать список образов и проверять их.

docker_image_load

Модуль community.docker.docker_image_load позволяет импортировать один или несколько образов из tar-архивов.

docker_image_pull

Модуль community.docker.docker_image_pull позволяет загружать образ Docker из реестра.

docker_image_push

Модуль community.docker.docker_image_push позволяет отправлять образ Docker в реестр.

docker_image_remove

Модуль community.docker.docker_image_remove позволяет удалять образ Docker из демона Docker и/или снимать с него тег.

docker_image_tag

Модуль community.docker.docker_image_tag позволяет присваивать образу Docker дополнительные имена и/или теги.

модуль docker_network

Модуль community.docker.docker_network обеспечивает полный контроль над сетями Docker.

модуль docker_network_info

Модуль community.docker.docker_network_info позволяет проверять сети Docker.

модуль docker_volume_info

Модуль community.docker.docker_volume_info обеспечивает полный контроль над томами Docker.

модуль docker_volume

Модуль community.docker.docker_volume позволяет проверять тома Docker.

модуль docker_container

Модуль community.docker.docker_container управляет жизненным циклом контейнера, позволяя создавать, обновлять, останавливать, запускать и удалять контейнер Docker.

docker_container_copy_into

Модуль community.docker.docker_container_copy_into позволяет копировать файлы с управляющего узла в контейнер.

docker_container_exec

Модуль community.docker.docker_container_exec позволяет выполнять команды в работающем контейнере.

модуль docker_container_info

Модуль community.docker.docker_container_info позволяет проверять контейнер Docker.

docker_plugin

Модуль community.docker.docker_plugin позволяет управлять плагинами Docker.

Docker Compose

Docker Compose v2

Для работы с проектами Docker Compose доступны несколько модулей:

community.docker.docker_compose_v2

Модуль community.docker.docker_compose_v2 позволяет использовать существующие файлы Docker Compose для оркестрации контейнеров на одном демоне Docker или в Swarm.

community.docker.docker_compose_v2_exec

Модуль community.docker.docker_compose_v2_exec позволяет выполнять команду в контейнере проекта Docker Compose.

community.docker.docker_compose_v2_pull

Модуль community.docker.docker_compose_v2_pull позволяет загружать проекты Docker Compose.

community.docker.docker_compose_v2_run

Модуль community.docker.docker_compose_v2_run позволяет выполнять команду в новом контейнере проекта Docker Compose.

Эти модули используют плагин «compose» Docker CLI (docker compose), поэтому им необходим доступ к инструменту Docker CLI. Помимо инструмента CLI и его плагина Docker Compose никаких дополнительных требований нет.

Docker Machine

Плагин инвентаризации community.docker.docker_machine позволяет динамически добавлять хосты Docker Machine в инвентаризацию Ansible.

Стек Docker Swarm

Модуль community.docker.docker_stack позволяет управлять стеками Docker Swarm. Сведения о стеках Swarm можно получить с помощью модуля community.docker.docker_stack_info, а сведения о задачах стека Swarm — с помощью модуля community.docker.docker_stack_task_info.

Docker Swarm

Коллекция community.docker предоставляет несколько плагинов и модулей для управления Docker Swarm.

Управление Swarm

Для управления Docker Swarm доступны один плагин инвентаризации и несколько модулей:

плагин инвентаризации docker_swarm

Плагин инвентаризации community.docker.docker_swarm позволяет динамически добавлять все узлы Docker Swarm в инвентаризацию Ansible.

модуль docker_swarm

Модуль community.docker.docker_swarm позволяет глобально настраивать узлы-менеджеры Docker Swarm для присоединения к кластерам и выхода из них, а также изменять конфигурацию Docker Swarm.

модуль docker_swarm_info

Модуль community.docker.docker_swarm_info позволяет получать сведения о Docker Swarm.

модуль docker_node

Модуль community.docker.docker_node позволяет управлять узлами Docker Swarm.

модуль docker_node_info

Модуль community.docker.docker_node_info позволяет получать сведения об узлах Docker Swarm.

Управление конфигурацией

Коллекция community.docker предоставляет модули для управления конфигурациями и секретами Docker Swarm:

модуль docker_config

Модуль community.docker.docker_config позволяет создавать и изменять конфигурации Docker Swarm.

модуль docker_secret

Модуль community.docker.docker_secret позволяет создавать и изменять секреты Docker Swarm.

Сервисы Swarm

Сервисы Docker Swarm можно создавать и обновлять с помощью модуля community.docker.docker_swarm_service, а получать сведения о них — с помощью модуля community.docker.docker_swarm_service_info.

© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/community/docker/docsite/scenario_guide.html

Spec-Zone.ru

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