Руководство по 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