Руководство по Docker
Коллекция community.docker предоставляет несколько модулей и плагинов для управления контейнерами Docker и Docker Swarm.
- Требования
- Подключение к API Docker
- Простой демони Docker: образы, сети, тома и контейнеры
- Docker Compose
- Docker Machine
- Docker стек
- Docker Swarm
- Полезные ссылки
Требования
Большинство модулей и плагинов в community.docker требуют Docker SDK для Python. SDK необходимо установить на машинах, где выполняются модули и плагины, и для тех версий Python, с которыми выполняются модули и плагины. Вы можете использовать модуль community.general.python_requirements_info, чтобы убедиться, что Docker SDK для Python установлен на правильной машине и для версии Python, используемой Ansible.
Обратите внимание, что плагины (плагины инвентаризации и плагины подключения) всегда выполняются в контексте самого Ansible. Если вы используете плагин, который требует Docker SDK для Python, вам нужно установить его на машине, на которой выполняется ansible или ansible-playbook, и для того же интерпретатора Python, который используется Ansible. Чтобы узнать, какой Python используется, выполните ansible --version.
Вы можете установить Docker SDK для Python для Python 2.7 или Python 3 следующим образом:
$ pip install docker
Для Python 2.6 вам нужна версия до 2.0. Для этих версий SDK назывался docker-py, поэтому вам нужно установить его следующим образом:
$ pip install 'docker-py>=1.10.0'
Пожалуйста, установите только один из 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 для Python.
- timeout
-
Максимальное время ожидания ответа от API в секундах. По умолчанию 60 секунд.
- tls
-
Защитить подключение к API с помощью TLS без проверки подлинности сервера хоста Docker. По умолчанию
false. - validate_certs
-
Защитить подключение к API с помощью TLS и проверить подлинность сервера хоста Docker. По умолчанию
false. - cacert_path
-
Использовать сертификат CA при проверке сервера, указав путь к файлу сертификата CA.
- cert_path
-
Путь к файлу TLS-сертификата клиента.
- key_path
-
Путь к файлу TLS-ключа клиента.
- tls_hostname
-
При проверке подлинности сервера хоста Docker укажите ожидаемое имя сервера. По умолчанию
localhost. - ssl_version
-
Укажите допустимый номер версии SSL. Значение по умолчанию определяется Docker SDK для Python.
Переменные среды
Вы также можете контролировать, как плагины и модули подключаются к API Docker, задавая следующие переменные среды.
Для плагинов они должны быть заданы для среды, в которой Ansible выполняется. Для модулей они должны быть заданы для среды, в которой выполняются модули. Для модулей, выполняемых на удаленных машинах, переменные среды должны быть установлены на этой машине для пользователя, используемого для выполнения модулей.
- DOCKER_HOST
-
URL или путь к сокету Unix, используемый для подключения к API Docker.
- DOCKER_API_VERSION
-
Версия API Docker, работающего на хосте Docker. По умолчанию — последняя версия API, поддерживаемая docker-py.
- DOCKER_TIMEOUT
-
Максимальное время ожидания ответа от API в секундах.
- DOCKER_CERT_PATH
-
Путь к каталогу, содержащему клиентский сертификат, ключ клиента и сертификат CA.
- DOCKER_SSL_VERSION
-
Укажите допустимый номер версии SSL.
- DOCKER_TLS
-
Защитить подключение к API с помощью TLS без проверки подлинности сервера хоста Docker.
- DOCKER_TLS_VERIFY
-
Защитить подключение к API с помощью TLS и проверить подлинность сервера хоста Docker.
Простой демони Docker: образы, сети, тома и контейнеры
Для работы с простым демоном Docker, то есть без Swarm, доступны плагины подключения, плагин инвентаризации и несколько модулей:
END_OF_DOCUMENT_MARKER- Плагин подключения 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_info
-
Модуль community.docker.docker_image_info позволяет перечислять и инспектировать образы.
- Модуль 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_info
-
Модуль community.docker.docker_container_info позволяет инспектировать контейнер Docker.
Docker Compose
Модуль community.docker.docker_compose позволяет использовать ваши существующие файлы Docker Compose для оркестрации контейнеров на одном демоне Docker или на Swarm. Поддерживает версии Compose 1 и 2.
Помимо Docker SDK для Python, вам необходимо установить docker-compose на удаленных машинах, чтобы использовать модуль.
Docker Machine
Плагин инвентаризации community.docker.docker_machine позволяет динамически добавлять хосты Docker Machine в вашу инвентаризацию Ansible.
Docker stack
Модуль community.docker.docker_stack позволяет управлять стеками Docker. Информацию о стеках можно получить с помощью модуля community.docker.docker_stack_info, а информацию о задачах стека — с помощью модуля 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 для присоединения и выхода из 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.
Полезные ссылки
Вы все еще используете Dockerfile для сборки образов? Обратите внимание на ansible-bender и начните создавать образы из ваших Ansible playbooks.
Используйте Ansible Operator, чтобы запустить ваш файл docker-compose на OpenShift. Перейдите от приложения на вашем ноутбуке к полностью масштабируемому приложению в облаке с Kubernetes всего за несколько мгновений.
© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/scenario_guides/guide_docker.html