docker_image – Управление образами docker
Описание
- Сборка, загрузка или получение образа, делая образ доступным для создания контейнеров. Также поддерживает добавление тега к образу в репозиторий и архивирование образа в файл .tar.
- Начиная с Ansible 2.8, рекомендуется явно указывать источник образа (source может быть
build,load,pullилиlocal). Это станет обязательным начиная с Ansible 2.12.
Требования
Ниже перечислены требования, необходимые на хосте, на котором выполняется этот модуль.
- Docker API >= 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 Host. По умолчанию используется последняя версия API, поддерживаемая Docker SDK для Python и демоном docker. Если значение не указано в задаче, будет использовано значение переменной среды DOCKER_API_VERSION. Если переменная среды не задана, будет использовано значение по умолчанию.псевдонимы: docker_api_version | ||
| archive_path путь | Используйте со значением present для архивирования образа в файл .tar. | |||
| build словарь добавлен в 2.8 | Указывает параметры, используемые для сборки образов. | |||
| args словарь | Предоставьте словарь key:value аргументов сборки, которые соответствуют директивам Dockerfile ARG.Docker ожидает, что значение будет строкой. Для удобства любые значения, отличные от строки, будут преобразованы в строки. Требуется Docker API >= 1.21. | |||
| cache_from список / элементы=строка | Список имён образов, которые следует рассматривать как источник кеша. | |||
| container_limits словарь | Словарь ограничений, применяемых к каждому контейнеру, создаваемому процессом сборки. | |||
| cpusetcpus строка | Процессоры, разрешенные для выполнения, например, "0-3", "0,1". | |||
| cpushares целое число | CPU доли (относительный вес). | |||
| memory целое число | Установить предел памяти для сборки. | |||
| memswap целое число | Общая память (память + своп), -1 для отключения свопа. | |||
| dockerfile строка | Используйте со значением present и источником build для предоставления альтернативного имени Dockerfile для использования при сборке образа.Это также может включать относительный путь (относительно path). | |||
| etc_hosts словарь добавлен в 2.9 | Дополнительные хосты для добавления в /etc/hosts при создании контейнеров в виде отображения имени хоста на IP-адрес. | |||
| http_timeout целое число | Таймаут для HTTP-запросов во время операции сборки образа. Укажите положительное целое значение в секундах. | |||
| network строка | Сеть для использования для RUN инструкций сборки. | |||
| nocache булево |
| Не использовать кеш при сборке образа. | ||
| path путь / обязательно | Используйте со значением 'present' для сборки образа. Будет указан путь к каталогу, содержащему контекст и Dockerfile для сборки образа. | |||
| pull булево |
| При сборке образа загружает любые обновления для образа FROM в Dockerfile. По умолчанию сейчас yes. Это изменится на no в Ansible 2.12. | ||
| rm булево |
| Удалить промежуточные контейнеры после сборки. | ||
| target строка добавлен в 2.9 | При сборке образа указывает промежуточную стадию сборки по имени как конечную стадию для результирующего образа. | |||
| 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 вместо этого. Этот параметр будет удален в Ansible 2.12. | |||
| 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 вместо этого. Этот параметр будет удален в Ansible 2.12. | |||
| cpusetcpus строка | Процессоры, разрешенные для выполнения, например, "0-3", "0,1". | |||
| cpushares целое число | CPU доли (относительный вес). | |||
| memory целое число | Установить предел памяти для сборки. | |||
| memswap целое число | Общая память (память + своп), -1 для отключения свопа. | |||
| debug булево |
| Режим отладки | ||
| docker_host строка | Значение по умолчанию: "unix://var/run/docker.sock" | URL или путь к сокету Unix, используемый для подключения к API Docker. Для подключения к удалённому хосту укажите строку TCP-соединения. Например, tcp://192.0.2.23:2376. Если для шифрования соединения используется TLS, модуль автоматически заменит tcp в URL соединения на https. Если значение не указано в задании, используется значение переменной окружения DOCKER_HOST. Если переменная окружения не задана, используется значение по умолчанию.псевдонимы: docker_url | ||
| dockerfile строка | Используйте со state present и source build для указания альтернативного имени Dockerfile при построении образа.Также может содержать относительный путь (относительно path). Пожалуйста, используйте build.dockerfile вместо этого. Этот параметр будет удалён в Ansible 2.12. | |||
| force логическое значение |
| Используйте со state absent для снятия тега и удаления всех образов, соответствующих указанному имени. Используйте со state present для построения, загрузки или получения образа, когда образ уже существует. Также используйте со state present для принудительного добавления тега к образу.Пожалуйста, прекратите использовать этот параметр и используйте более специализированные параметры force_source, force_absent и force_tag. Этот параметр будет удалён в Ansible 2.12. | ||
| force_absent логическое значение добавлен в 2.8 |
| Используйте со state absent для снятия тега и удаления всех образов, соответствующих указанному имени. | ||
| force_source логическое значение добавлен в 2.8 |
| Используйте со state present для построения, загрузки или получения образа (в зависимости от значения параметра source), когда образ уже существует. | ||
| force_tag логическое значение добавлен в 2.8 |
| Используйте со state present для принудительного добавления тега к образу. | ||
| http_timeout целое число | Таймаут для HTTP-запросов во время построения образа. Укажите положительное целое значение в секундах. Пожалуйста, используйте build.http_timeout вместо этого. Этот параметр будет удалён в Ansible 2.12. | |||
| load_path путь | Используйте со state present для загрузки образа из файла .tar.Установите source на load, если хотите загрузить образ. Параметр будет автоматически установлен до Ansible 2.12, если этот параметр используется (кроме случаев, когда path также указан, в этом случае построение будет иметь приоритет). Начиная с Ansible 2.12, необходимо установить source на load. | |||
| name строка / обязательный | Имя образа. Формат имени может быть одним из следующих: имя, репозиторий/имя, сервер_реестра:порт/имя. При отправке или получении образа имя может необязательно включать тег, добавляя ":имя_тега". Обратите внимание, что идентификаторы образов (хеши) не поддерживаются. | |||
| nocache логическое значение |
| Не использовать кэш при построении образа. Пожалуйста, используйте build.nocache вместо этого. Этот параметр будет удалён в Ansible 2.12. | ||
| path путь | Используйте со state 'present' для построения образа. Будет указан путь к каталогу, содержащему контекст и Dockerfile для построения образа. Установите source на build, если хотите построить образ. Параметр будет автоматически установлен до Ansible 2.12, если этот параметр используется. Начиная с Ansible 2.12, необходимо установить source на build.Пожалуйста, используйте build.path вместо этого. Этот параметр будет удалён в Ansible 2.12. псевдонимы: build_path | |||
| pull логическое значение |
| При построении образа скачиваются любые обновления FROM-образа в Dockerfile. Пожалуйста, используйте build.pull вместо этого. Этот параметр будет удалён в Ansible 2.12. По умолчанию в настоящее время yes. Это изменится на no в Ansible 2.12. | ||
| push логическое значение |
| Отправить образ в реестр. Укажите реестр в параметре name или repository. | ||
| repository строка | Полный путь к репозиторию. Используйте со state present для добавления тега к образу в репозиторий. Ожидается формат репозиторий:тег. Если тег не указан, будет использоваться значение параметра tag или latest. | |||
| rm логическое значение |
| Удалить промежуточные контейнеры после построения. Пожалуйста, используйте build.rm вместо этого. Этот параметр будет удалён в Ansible 2.12. | ||
| source строка добавлен в 2.8 |
| Определяет, откуда модуль будет пытаться получить образ. Используйте build для построения образа из Dockerfile. build.path должен быть указан, когда используется это значение.Используйте load для загрузки образа из файла .tar. load_path должен быть указан, когда используется это значение.Используйте pull для получения образа из реестра.Используйте local для того, чтобы убедиться, что образ уже доступен в локальном демоне Docker, то есть не пытаться построить, получить или загрузить образ.Перед Ansible 2.12 значение этого параметра будет автоматически определяться для обратной совместимости, но будет выведено предупреждение, если оно не указано явно. Начиная с Ansible 2.12, автоматическое определение будет отключено, и этот параметр будет обязательным. | ||
| ssl_version строка | Укажите допустимое значение версии SSL. Значение по умолчанию определяется модулем ssl.py. Если значение не указано в задании, используется значение переменной окружения DOCKER_SSL_VERSION. | |||
| state строка |
| Осуществляйте утверждения о состоянии образа. При значении absent образ будет удалён. Используйте параметр force для снятия тега и удаления всех образов, соответствующих указанному имени.При значении present проверьте, существует ли образ с использованием предоставленного имени и тега. Если образ не найден или используется параметр force, образ будет либо получен, либо построен, либо загружен в зависимости от параметра source.По умолчанию образ будет получен из Docker Hub или из реестра, указанного в имени образа. Обратите внимание, что это изменится в Ansible 2.12, поэтому, чтобы убедиться, что вы получаете, установите source на pull. Чтобы построить образ, укажите значение path, установленное на каталог, содержащий контекст и Dockerfile, и установите source на build. Чтобы загрузить образ, укажите load_path для указания пути к файлу архива. Чтобы добавить тег к образу в репозиторий, укажите путь repository. Если имя содержит путь к репозиторию, оно будет отправлено.*Примечание:* state=build устарел и будет удалён в Ansible 2.11. Указание build будет работать так же, как present. | ||
| tag строка | Значение по умолчанию: "latest" | Используется для выбора образа при получении. Будет добавлен к образу при отправке, добавлении тега или построении. По умолчанию latest. Если формат параметра name — имя:тег, то значение тега из name будет иметь приоритет. | ||
| timeout целое число | Значение по умолчанию: 60 | Максимальное время ожидания ответа от API в секундах. Если значение не указано в задаче, будет использовано значение переменной окружения DOCKER_TIMEOUT. Если переменная окружения не задана, будет использовано значение по умолчанию. | ||
| tls логическое значение |
| Защитить соединение с 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.Будет удалено в Ansible 2.11. | ||
| validate_certs логическое значение |
| Защитить соединение с 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 for Python версии 2.4 или новее это можно сделать, установив
docker[tls]с помощью pip. - Обратите внимание, что Docker SDK for Python позволяет указать только путь к конфигурации Docker для очень немногих функций. В общем случае он будет использовать
$HOME/.docker/config.json, если переменная окруженияDOCKER_CONFIGне указана, и использовать$DOCKER_CONFIG/config.jsonв противном случае.
Примеры
- name: pull an image
docker_image:
name: pacur/centos-7
source: pull
- name: Tag and push to docker hub
docker_image:
name: pacur/centos-7:56
repository: dcoppenhagan/myimage:7.56
push: yes
source: local
- name: Tag and push to local registry
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
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
docker_image:
state: absent
name: registry.ansible.com/chouseknecht/sinatra
tag: v1
- name: Build an image and push it to a private repo
docker_image:
build:
path: ./sinatra
name: registry.ansible.com/chouseknecht/sinatra
tag: v1
push: yes
source: build
- name: Archive image
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
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
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
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 словарь | успешно | Результаты проверки изображения для затронутого изображения. |
Статус
- Этот модуль не гарантирует обратную совместимость интерфейса. [предварительная версия]
- Этот модуль поддерживается сообществом Ansible. [community]
Авторы
- Павел Антонов (@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.9/modules/docker_image_module.html