community.general.docker_image – Управление образами Docker.
Примечание
Этот плагин входит в коллекцию community.general (версия 1.3.2).
Для его установки используйте: ansible-galaxy collection install community.general.
Чтобы использовать его в книге задач, укажите: community.general.docker_image.
Обзор
- Создайте, загрузите или получите образ, сделав его доступным для создания контейнеров. Также поддерживает маркирование образа в репозитории и архивирование образа в файл .tar.
- Начиная с Ansible 2.8, рекомендуется явно указать источник образа (source может быть
build,load,pullилиlocal). Это станет обязательным начиная с community.general 2.0.0.
Требования
Ниже перечислены требования к хосту, на котором выполняется данный модуль.
- API Docker >= 1.20
- Docker SDK для Python: Обратите внимание, что модуль Python docker-py был заменен на docker (подробности см. в здесь). Для Python 2.6 необходимо использовать
docker-py. В противном случае рекомендуется установить модуль Pythondocker. Обратите внимание, что оба модуля не должны быть установлены одновременно. Также обратите внимание, что при установке и удалении одного из модулей, другой может перестать работать, и потребуется его переустановка. - Docker SDK для Python >= 1.8.0 (используйте docker-py для Python 2.6)
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии | ||
|---|---|---|---|---|
| api_version строка | По умолчанию: "auto" | Версия Docker API, работающая на Docker хосте. По умолчанию используется последняя версия API, поддерживаемая Docker SDK для Python и демоном docker. Если значение не указано в задаче, используется значение переменной окружения DOCKER_API_VERSION. Если переменная окружения не задана, используется значение по умолчанию.Псевдонимы: docker_api_version | ||
| archive_path путь | Используется со статусом present для архивирования образа в файл .tar. | |||
| build словарь | Указывает параметры, используемые для построения образов. | |||
| args словарь | Предоставляет словарь аргументов для построения key:value, которые сопоставляются с директивой Dockerfile ARG.Docker ожидает, что значение будет строкой. Для удобства любые значения, отличные от строк, будут преобразованы в строки. Требуется Docker API >= 1.21. | |||
| cache_from список / элементы=строка | Список имен образов, которые следует рассматривать как источник кэша. | |||
| container_limits словарь | Словарь ограничений, применяемых к каждому контейнеру, созданному процессом построения. | |||
| cpusetcpus строка | Процессоры, в которых разрешено выполнение, например, "0-3", "0,1". | |||
| cpushares целое число | Доли процессора (относительный вес). | |||
| memory целое число | Установить ограничение памяти для построения. | |||
| memswap целое число | Общий объем памяти (память + своп), -1 для отключения свопа. | |||
| dockerfile строка | Используется со статусом present и источником build для задания альтернативного имени Dockerfile, используемого при построении образа.Также может включать относительный путь (относительно path). | |||
| etc_hosts словарь | Дополнительные хосты для добавления в /etc/hosts при построении контейнеров в виде отображения имени хоста к IP-адресу. | |||
| http_timeout целое число | Таймаут для HTTP-запросов во время операции построения образа. Укажите положительное целое число в секундах. | |||
| network строка | Сеть, используемая для инструкций построения RUN. | |||
| nocache логическое значение |
| Не использовать кэш при построении образа. | ||
| path путь / обязательно | Используется со статусом 'present' для построения образа. Будет путём к каталогу, содержащему контекст и Dockerfile для построения образа. | |||
| pull логическое значение |
| При построении образа загружает любые обновления для образа FROM в Dockerfile. По умолчанию в настоящее время yes. Это изменится на no в версии community.general 2.0.0. | ||
| rm логическое значение |
| Удалить промежуточные контейнеры после построения. | ||
| target строка | При построении образа определяет промежуточную стадию сборки по имени в качестве конечной стадии для результирующего образа. | |||
| use_config_proxy логическое значение |
| Если установлено значение yes и в конфигурации клиента docker указана конфигурация прокси (по умолчанию $HOME/.docker/config.json), соответствующие переменные окружения будут установлены в строящемся контейнере.Требуется Docker SDK для Python >= 3.7.0. | ||
| buildargs словарь | Предоставляет словарь аргументов для построения key:value, которые сопоставляются с директивой Dockerfile ARG.Docker ожидает, что значение будет строкой. Для удобства любые значения, отличные от строк, будут преобразованы в строки. Требуется Docker API >= 1.21. Пожалуйста, используйте build.args вместо этого. Этот параметр будет удалён в версии community.general 2.0.0. | |||
| ca_cert путь | Использование сертификата CA при проверке сервера путём предоставления пути к файлу сертификата CA. Если значение не указано в задаче и установлена переменная окружения DOCKER_CERT_PATH, будет использован файл ca.pem из каталога, указанного в переменной окружения DOCKER_CERT_PATH.Псевдонимы: tls_ca_cert, cacert_path | |||
| client_cert путь | Путь к файлу сертификата TLS клиента. Если значение не указано в задаче и установлена переменная окружения DOCKER_CERT_PATH, будет использован файл cert.pem из каталога, указанного в переменной окружения DOCKER_CERT_PATH.Псевдонимы: tls_client_cert, cert_path | |||
| client_key путь | Путь к файлу ключа TLS клиента. Если значение не указано в задаче и установлена переменная окружения DOCKER_CERT_PATH, будет использован файл key.pem из каталога, указанного в переменной окружения DOCKER_CERT_PATH.Псевдонимы: tls_client_key, key_path | |||
| container_limits словарь | Словарь ограничений, применяемых к каждому контейнеру, созданному процессом построения. Пожалуйста, используйте build.container_limits вместо этого. Этот параметр будет удалён в версии community.general 2.0.0. | |||
| cpusetcpus строка | Процессоры, в которых разрешено выполнение, например, "0-3", "0,1". | |||
| cpushares целое число | Доли процессора (относительный вес). | |||
| memory целое число | Установить ограничение памяти для построения. | |||
| memswap целое число | Общий объем памяти (память + своп), -1 для отключения свопа. | |||
| debug логическое значение |
| Режим отладки | ||
| 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 | ||
| dockerfile строка | Используется со статусом present и источником build для задания альтернативного имени Dockerfile, используемого при построении образа.Также может включать относительный путь (относительно path). Пожалуйста, используйте build.dockerfile вместо этого. Этот параметр будет удалён в версии community.general 2.0.0. | |||
| force логическое значение |
| Используется со статусом absent для удаления и отметки всех образов, соответствующих указанному имени. Используется со статусом present для построения, загрузки или загрузки образа, когда образ уже существует. Также используется со статусом present для принудительной отметки образа.Прекратите использование этого параметра и используйте более специализированные параметры force_source, force_absent и force_tag вместо этого. Этот параметр будет удалён в версии community.general 2.0.0. | ||
| force_absent логическое значение |
| Используется со статусом absent для удаления и отметки всех образов, соответствующих указанному имени. | ||
| force_source логическое значение |
| Используется со статусом present для построения, загрузки или загрузки образа (в зависимости от значения параметра source), когда образ уже существует. | ||
| force_tag boolean |
| Используйте со состоянием present для принудительной маркировки изображения. | ||
| http_timeout целое число | Таймаут для HTTP-запросов во время операции построения изображения. Укажите положительное целое значение в секундах. Пожалуйста, используйте build.http_timeout вместо этого. Этот параметр будет удален в версии community.general 2.0.0. | |||
| load_path путь | Используйте со состоянием present для загрузки изображения из файла .tar.Установите source в load, если вы хотите загрузить изображение. Параметр будет автоматически установлен до версии community.general 2.0.0, если этот параметр используется (кроме случаев, когда также указан параметр path, в этом случае построение будет иметь приоритет). Начиная с версии community.general 2.0.0, вы должны установить source в load. | |||
| name строка / обязательно | Имя изображения. Формат имени может быть одним из: имя, репозиторий/имя, сервер_регистра:порт/имя. При отправке или извлечении изображения имя может необязательно включать тег, добавляя ":имя_тега". Обратите внимание, что идентификаторы изображений (хеши) не поддерживаются. | |||
| nocache boolean |
| Не использовать кэш при построении изображения. Пожалуйста, используйте build.nocache вместо этого. Этот параметр будет удален в версии community.general 2.0.0. | ||
| path путь | Используйте со состоянием 'present' для построения изображения. Будет указан путь к каталогу, содержащему контекст и Dockerfile для построения изображения. Установите source в build, если вы хотите построить изображение. Параметр будет автоматически установлен до версии community.general 2.0.0, если этот параметр используется. Начиная с версии community.general 2.0.0, вы должны установить source в build.Пожалуйста, используйте build.path вместо этого. Этот параметр будет удален в версии community.general 2.0.0. псевдонимы: build_path | |||
| pull boolean |
| При построении изображения загружает все обновления для изображения FROM в Dockerfile. Пожалуйста, используйте build.pull вместо этого. Этот параметр будет удален в версии community.general 2.0.0. По умолчанию в настоящее время yes. Это изменится на no в версии community.general 2.0.0. | ||
| push boolean |
| Отправить изображение в реестр. Укажите реестр в параметре name или repository. | ||
| repository строка | Полный путь к репозиторию. Используйте со состоянием present для добавления тега к изображению в репозиторий. Ожидается формат repository:tag. Если тег не указан, будет использоваться значение параметра tag или latest. | |||
| rm boolean |
| Удалить промежуточные контейнеры после сборки. Пожалуйста, используйте build.rm вместо этого. Этот параметр будет удален в версии community.general 2.0.0. | ||
| source строка |
| Определяет, откуда модуль попытается извлечь изображение. Используйте build для построения изображения из Dockerfile. build.path должен быть указан, когда используется это значение.Используйте load для загрузки изображения из .tar файла. load_path должен быть указан, когда используется это значение.Используйте pull для извлечения изображения из реестра.Используйте local для того, чтобы убедиться, что изображение уже доступно в локальном демоне Docker, то есть не пытайтесь построить, извлечь или загрузить изображение.До версии community.general 2.0.0 значение этого параметра будет автоматически определяться для обеспечения обратной совместимости, но будет выведено предупреждение, если оно не указано явно. Начиная с версии community.general 2.0.0, автоматическое определение будет отключено, и этот параметр станет обязательным. | ||
| ssl_version строка | Укажите действительную версию SSL. Значение по умолчанию определяется модулем ssl.py. Если значение не указано в задаче, будет использоваться значение переменной окружения DOCKER_SSL_VERSION. | |||
| state строка |
| Делать утверждения о состоянии изображения. При absent изображение будет удалено. Используйте параметр force, чтобы размаркировать и удалить все изображения, соответствующие предоставленному имени.При present проверьте, существует ли изображение с предоставленным именем и тегом. Если изображение не найдено или используется параметр force, изображение будет извлечено, построено или загружено в зависимости от параметра source.По умолчанию изображение будет извлечено из Docker Hub или реестра, указанного в имени изображения. Обратите внимание, что это изменится в версии community.general 2.0.0, поэтому, чтобы убедиться, что вы извлекаете, установите source в pull. Чтобы построить изображение, укажите значение path, установленное на каталог, содержащий контекст и Dockerfile, и установите source в build. Чтобы загрузить изображение, укажите load_path, чтобы указать путь к файлу архива. Чтобы добавить тег изображения в репозиторий, укажите путь repository. Если имя содержит путь к репозиторию, оно будет отправлено.*Примечание:* state=build УСТАРЕЛО и будет удалено в версии community.general 2.0.0. Указание build будет работать так же, как present. | ||
| tag строка | По умолчанию: "latest" | Используется для выбора изображения при извлечении. Будет добавлен к изображению при отправке, добавлении тега или построении. По умолчанию latest. Если формат параметра name равен name:tag, то значение тега из name будет иметь приоритет. | ||
| timeout целое число | По умолчанию: 60 | Максимальное время ожидания ответа от API в секундах. Если значение не указано в задаче, будет использоваться значение переменной окружения DOCKER_TIMEOUT вместо него. Если переменная окружения не установлена, будет использовано значение по умолчанию. | ||
| tls boolean |
| Обеспечьте безопасное подключение к API с помощью TLS без проверки подлинности хоста Docker. Обратите внимание, что если validate_certs также установлен в значение yes, оно будет иметь приоритет.Если значение не указано в задаче, будет использоваться значение переменной окружения DOCKER_TLS вместо него. Если переменная окружения не установлена, будет использовано значение по умолчанию. | ||
| tls_hostname строка | По умолчанию: "localhost" | При проверке подлинности хоста Docker укажите ожидаемое имя сервера. Если значение не указано в задаче, будет использоваться значение переменной окружения DOCKER_TLS_HOSTNAME вместо него. Если переменная окружения не установлена, будет использовано значение по умолчанию. | ||
| use_tls строка |
| УСТАРЕЛО. Нужно ли использовать tls для подключения к демону docker. Установите значение в encrypt для использования TLS. Установите значение в verify для использования TLS и проверки того, что сертификат сервера действителен для сервера.*Примечание:* Если вы укажете этот параметр, он установит значение параметров tls или validate_certs, если они не установлены в no.Будет удален в версии community.general 2.0.0. | ||
| validate_certs boolean |
| Обеспечьте безопасное подключение к API с помощью TLS и проверьте подлинность хоста Docker. Если значение не указано в задаче, будет использоваться значение переменной окружения DOCKER_TLS_VERIFY вместо него. Если переменная окружения не установлена, будет использовано значение по умолчанию.псевдонимы: tls_verify | ||
Примечания
Примечание
- Подключитесь к демону 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://docs.docker.com/machine/reference/env/ для получения дополнительной информации. - При подключении к демону Docker с TLS вам может потребоваться установить дополнительные пакеты Python. Для Docker SDK для Python версии 2.4 или более поздней это можно сделать, установив
docker[tls]с помощью ansible.builtin.pip. - Обратите внимание, что Docker SDK для Python позволяет указывать путь к конфигурации Docker только для очень немногих функций. В общем случае будет использоваться
$HOME/.docker/config.json, если переменная окруженияDOCKER_CONFIGне указана, и$DOCKER_CONFIG/config.jsonв противном случае.
Примеры
- name: Pull an image
community.general.docker_image:
name: pacur/centos-7
source: pull
- name: Tag and push to docker hub
community.general.docker_image:
name: pacur/centos-7:56
repository: dcoppenhagan/myimage:7.56
push: yes
source: local
- name: Tag and push to local registry
community.general.docker_image:
# Image will be centos:7
name: centos
# Will be pushed to localhost:5000/centos:7
repository: localhost:5000/centos
tag: 7
push: yes
source: local
- name: Add tag latest to image
community.general.docker_image:
name: myimage:7.1.2
repository: myimage:latest
# As 'latest' usually already is present, we need to enable overwriting of existing tags:
force_tag: yes
source: local
- name: Remove image
community.general.docker_image:
state: absent
name: registry.ansible.com/chouseknecht/sinatra
tag: v1
- name: Build an image and push it to a private repo
community.general.docker_image:
build:
path: ./sinatra
name: registry.ansible.com/chouseknecht/sinatra
tag: v1
push: yes
source: build
- name: Archive image
community.general.docker_image:
name: registry.ansible.com/chouseknecht/sinatra
tag: v1
archive_path: my_sinatra.tar
source: local
- name: Load image from archive and push to a private registry
community.general.docker_image:
name: localhost:5000/myimages/sinatra
tag: v1
push: yes
load_path: my_sinatra.tar
source: load
- name: Build image and with build args
community.general.docker_image:
name: myimage
build:
path: /path/to/build/dir
args:
log_volume: /var/log/myapp
listen_port: 8080
source: build
- name: Build image using cache source
community.general.docker_image:
name: myimage:latest
build:
path: /path/to/build/dir
# Use as cache source for building myimage
cache_from:
- nginx:latest
- alpine:3.8
source: build
Значения возврата
Общие значения возврата описаны здесь, следующие поля уникальны для данного модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| image словарь | успех | Результаты проверки изображения для затронутого изображения. |
| stdout строка добавлено в 1.3.0 community.general | успех | Вывод Docker build при построении изображения. |
Авторы
- Павел Антонов (@softzilla)
- Крис Хаусенект (@chouseknecht)
- Сорин Сбарнеа (@ssbarnea)
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/community/general/docker_image_module.html