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 хосте. По умолчанию используется последняя версия API, поддерживаемая Docker SDK для Python и демоном docker. Если значение не указано в задаче, используется значение переменной окружения DOCKER_API_VERSION. Если переменная окружения не задана, используется значение по умолчанию.псевдонимы: docker_api_version | ||
| archive_path путь добавлен в 2.1 | Используйте со значением 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). | |||
| http_timeout целое число | Таймаут для HTTP-запросов во время операции построения образа. Укажите положительное целое число для количества секунд. | |||
| network строка | Сеть для использования для инструкций построения RUN. | |||
| nocache логическое значение |
| Не использовать кэш при построении образа. | ||
| path путь / обязательно | Используйте со значением 'present' для построения образа. Будет путь к каталогу, содержащему контекст и Dockerfile для построения образа. | |||
| pull логическое значение |
| При построении образа загружает любые обновления FROM образа в Dockerfile. По умолчанию в настоящее время yes. Это изменится на no в Ansible 2.12. | ||
| rm логическое значение |
| Удалить промежуточные контейнеры после построения. | ||
| use_config_proxy логическое значение |
| Если установлено значение yes и в конфигурации клиента docker указана конфигурация прокси (по умолчанию $HOME/.docker/config.json), соответствующие переменные окружения будут установлены в строящемся контейнере.Требуется Docker SDK для Python >= 3.7.0. | ||
| buildargs словарь добавлен в 2.2 | Укажите словарь аргументов для построения 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 словарь добавлен в 2.1 | Словарь ограничений, применяемых к каждому контейнеру, созданному в процессе построения. Пожалуйста, используйте 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-сокету для подключения к Docker API. Для подключения к удаленному хосту укажите строку TCP-соединения. Например, tcp://192.0.2.23:2376. Если для шифрования соединения используется TLS, модуль автоматически заменит tcp в URL соединения на https. Если значение не указано в задаче, используется значение переменной окружения DOCKER_HOST. Если переменная окружения не задана, используется значение по умолчанию.псевдонимы: docker_url | ||
| dockerfile строка добавлено в 2.0 | Используйте со статусом present и источником build для предоставления альтернативного имени Dockerfile для использования при создании изображения.Это также может включать относительный путь (относительно path). Пожалуйста, используйте build.dockerfile вместо этого. Этот параметр будет удален в Ansible 2.12. | |||
| force логический тип добавлено в 2.1 |
| Используйте со статусом absent, чтобы удалить все теги и удалить все изображения, соответствующие указанному имени. Используйте со статусом present для создания, загрузки или получения изображения, когда изображение уже существует. Также используйте со статусом present для принудительного тегирования изображения.Пожалуйста, прекратите использовать этот параметр и используйте более специализированные параметры force_source, force_absent и force_tag вместо него. Этот параметр будет удален в Ansible 2.12. | ||
| force_absent логический тип добавлено в 2.8 |
| Используйте со статусом absent, чтобы удалить все теги и удалить все изображения, соответствующие указанному имени. | ||
| force_source логический тип добавлено в 2.8 |
| Используйте со статусом present для создания, загрузки или получения изображения (в зависимости от значения параметра source), когда изображение уже существует. | ||
| force_tag логический тип добавлено в 2.8 |
| Используйте со статусом present для принудительного тегирования изображения. | ||
| http_timeout целое число добавлено в 2.1 | Таймаут для HTTP-запросов во время операции создания изображения. Укажите положительное целое значение для количества секунд. Пожалуйста, используйте build.http_timeout вместо этого. Этот параметр будет удален в Ansible 2.12. | |||
| load_path путь добавлено в 2.2 | Используйте со статусом present для загрузки изображения из файла .tar.Установите source в load, если вы хотите загрузить изображение. Параметр будет установлен автоматически до Ansible 2.12, если используется этот параметр (за исключением случаев, когда path также указан, в этом случае создание будет иметь приоритет). Начиная с Ansible 2.12, вы должны установить source в load. | |||
| name строка / обязательно | Имя изображения. Формат имени будет одним из: имя, хранилище/имя, registry_server:port/имя. При отправке или получении изображения имя может необязательно включать тег, добавив ":tag_name". Обратите внимание, что идентификаторы изображений (хеши) не поддерживаются. | |||
| nocache логический тип |
| Не использовать кэш при создании изображения. Пожалуйста, используйте build.nocache вместо этого. Этот параметр будет удален в Ansible 2.12. | ||
| path путь | Используйте со статусом 'present' для создания изображения. Будет путь к каталогу, содержащему контекст и Dockerfile для создания изображения. Установите source в build, если вы хотите создать изображение. Параметр будет установлен автоматически до Ansible 2.12, если используется этот параметр. Начиная с Ansible 2.12, вы должны установить source в build.Пожалуйста, используйте build.path вместо этого. Этот параметр будет удален в Ansible 2.12. псевдонимы: build_path | |||
| pull логический тип добавлено в 2.1 |
| При создании изображения загружает любые обновления для изображения FROM в Dockerfile. Пожалуйста, используйте build.pull вместо этого. Этот параметр будет удален в Ansible 2.12. По умолчанию в настоящее время yes. Это изменится на no в Ansible 2.12. | ||
| push логический тип добавлено в 2.2 |
| Отправить изображение в репозиторий. Укажите репозиторий в качестве части параметра name или repository. | ||
| repository строка добавлено в 2.1 | Полный путь к репозиторию. Используйте со статусом present для тегирования изображения в репозиторий. Ожидается формат repository:tag. Если тег не указан, будет использовано значение параметра tag или latest. | |||
| rm логический тип добавлено в 2.1 |
| Удалить промежуточные контейнеры после сборки. Пожалуйста, используйте 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: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 строка добавлено в 2.0 |
| УСТАРЕЛО. Использовать tls для подключения к демону docker. Установите значение encrypt, чтобы использовать TLS. И установите значение verify, чтобы использовать TLS и проверить, что сертификат сервера действителен для данного сервера.*Примечание:* Если вы укажете этот параметр, он установит значение параметров tls или validate_certs, если они не установлены в no. Будет удалено в Ansible 2.11. | ||
| 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://docker-py.readthedocs.io/en/stable/machine/. - При подключении к демону Docker с помощью TLS может потребоваться установка дополнительных пакетов Python. Для Docker SDK для Python версии 2.4 или новее это можно сделать, установив
docker[tls]с помощью pip. - Обратите внимание, что Docker SDK для 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. [сообщество]
Авторы
- Павел Антонов (@softzilla)
- Крис Хауснект (@chouseknecht)
Подсказка
Если вы заметите какие-либо проблемы в этой документации, вы можете отредактировать этот документ, чтобы улучшить его.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.8/modules/docker_image_module.html