Spec-Zone.ru › Ansible

Модуль community.docker.docker_image_build — сборка образов Docker с помощью Docker buildx

Примечание

Этот модуль входит в коллекцию community.docker (версия 5.2.0).

Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не включена в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.

Для установки используйте: ansible-galaxy collection install community.docker. Для работы с этим модулем могут потребоваться дополнительные компоненты; подробности см. в разделе Требования.

Чтобы использовать модуль в плейбуке, укажите: community.docker.docker_image_build.

Добавлено в community.docker 3.6.0

  • Краткое описание
  • Требования
  • Параметры
  • Атрибуты
  • Примечания
  • См. также
  • Примеры
  • Возвращаемые значения

Краткое описание

  • Этот модуль позволяет собирать образы Docker с помощью плагина Docker buildx (BuildKit).
  • Обратите внимание: модуль не является идемпотентным в том смысле, который обычно подразумевается для модулей Ansible. Проверяется только то, существует ли уже собранный образ. Эту проверку можно отключить с помощью параметра rebuild.

Требования

На узле, где выполняется этот модуль, необходимы следующие компоненты.

  • Docker CLI с плагином Docker buildx

Параметры

Параметр

Комментарии

api_version

псевдонимы: docker_api_version

строка

Версия API Docker, работающего на узле Docker.

По умолчанию используется последняя версия API, поддерживаемая этой коллекцией и службой Docker daemon.

Если значение не указано в задаче, вместо него используется значение переменной среды DOCKER_API_VERSION. Если переменная среды не задана, используется значение по умолчанию.

По умолчанию: "auto"

args

словарь

Укажите словарь аргументов сборки key:value, соответствующих директиве ARG в Dockerfile.

Docker ожидает, что значение будет строкой. Для удобства любые значения, не являющиеся строками, будут преобразованы в строки.

ca_path

псевдонимы: ca_cert, tls_ca_cert, cacert_path

путь

Используйте сертификат центра сертификации для проверки сервера, указав путь к файлу сертификата центра сертификации.

Если значение не указано в задаче, а переменная среды DOCKER_CERT_PATH задана, будет использоваться файл ca.pem из каталога, указанного в переменной среды DOCKER_CERT_PATH.

cache_from

список / элементы=строка

Список имен образов, которые следует рассматривать как источники кэша.

cli_context

строка

Контекст Docker CLI, который следует использовать.

Взаимоисключающий параметр с docker_host.

client_cert

псевдонимы: tls_client_cert, cert_path

путь

Путь к файлу клиентского сертификата TLS.

Если значение не указано в задаче, а переменная среды DOCKER_CERT_PATH задана, будет использоваться файл cert.pem из каталога, указанного в переменной среды DOCKER_CERT_PATH.

client_key

псевдонимы: tls_client_key, key_path

путь

Путь к файлу клиентского ключа TLS.

Если значение не указано в задаче, а переменная среды DOCKER_CERT_PATH задана, будет использоваться файл key.pem из каталога, указанного в переменной среды DOCKER_CERT_PATH.

docker_cli

путь

Путь к Docker CLI. Если он не указан, Docker CLI будет искаться в PATH.

docker_host

псевдонимы: docker_url

строка

URL или путь к сокету Unix, используемый для подключения к API Docker. Чтобы подключиться к удаленному узлу, укажите строку TCP-подключения. Например, tcp://192.0.2.23:2376. Если соединение зашифровано с помощью TLS, модуль автоматически заменит tcp в URL подключения на https.

Если значение не указано в задаче, вместо него используется значение переменной среды DOCKER_HOST. Если переменная среды не задана, используется значение по умолчанию.

Взаимоисключающий параметр с cli_context. Если не указаны ни docker_host, ни cli_context, используется значение unix:///var/run/docker.sock.

dockerfile

строка

Укажите альтернативное имя Dockerfile, который будет использоваться при сборке образа.

Также можно указать относительный путь (относительно path).

etc_hosts

словарь

Дополнительные узлы, добавляемые в /etc/hosts при сборке контейнеров, в виде соответствий имени узла IP-адресу.

Вместо IP-адреса можно также использовать специальное значение host-gateway, которое разрешается в IP-адрес шлюза узла и позволяет собираемым контейнерам подключаться к службам, работающим на узле.

labels

словарь

Словарь пар «ключ — значение».

name

строка / обязательный

Имя образа. Формат имени может быть одним из следующих: name, repository/name, registry_server:port/name. При отправке или получении образа к имени можно добавить тег, дописав :tag_name.

Обратите внимание, что идентификаторы образов (хеши) и имена с дайджестом использовать нельзя.

network

строка

Сеть, используемая для инструкций сборки RUN.

nocache

логическое значение

Не использовать кэш при сборке образа.

Варианты:

  • false ← (по умолчанию)
  • true

outputs

список / элементы=словарь

добавлено в community.docker 3.10.0

Назначения для вывода.

Можно указать список экспортеров, чтобы экспортировать собранный образ в различные места. Обратите внимание, что используемый драйвер сборки может поддерживать не все экспортеры.

В зависимости от использования этого параметра образ с именем name и тегом tag может не создаваться, из-за чего базовая проверка идемпотентности этого модуля может не работать.

Пустой список, указанный для этого параметра, эквивалентен отсутствию параметра. По умолчанию используется одна запись с outputs[].type=image.

Обратите внимание, что начиная с community.docker 4.2.0 добавляется запись для name/tag, если outputs содержит хотя бы одну запись и ни одна запись не имеет тип outputs[].type=image и не содержит name/tag в outputs[].name. Это необходимо, поскольку иначе модуль передал бы плагину buildx значение --tag name:image, которое по какой-то причине перезаписывает все образы в outputs значением name:image, указанным в name/tag.

context

строка

Имя контекста Docker, в который следует импортировать результат.

Необязателен для outputs[].type=docker.

dest

путь

Путь назначения.

Обязателен для outputs[].type=local, outputs[].type=tar, outputs[].type=oci.

Необязателен для outputs[].type=docker.

name

список / элементы=строка

Имя или имена, под которыми сохраняется образ.

Если значение не указано, будут использоваться name и tag.

Необязателен для outputs[].type=image.

Начиная с community.docker 4.2.0 это может быть список строк.

push

логическое значение

Следует ли отправлять собранный образ в реестр.

Используется только для outputs[].type=image.

Варианты:

  • false ← (по умолчанию)
  • true

type

строка / обязательный

Тип экспортера, который следует использовать.

Варианты:

  • "docker": этот тип экспорта записывает результат сборки для одной платформы в виде tar-архива со спецификацией образа Docker на клиенте. Архивы, созданные этим экспортером, также совместимы с OCI.

    Назначение можно указать в outputs[].dest. Если оно не задано, tar-архив будет автоматически загружен в локальное хранилище образов.

    Контекст Docker, в который следует импортировать результат, можно указать в outputs[].context.

  • "image": этот экспортер записывает результат сборки в виде образа или списка манифестов. При использовании этого драйвера образ появится в docker images.

    Имя образа можно указать в outputs[].name. Если оно не указано, будут использоваться name и tag.

    При необходимости образ можно автоматически отправить в реестр, установив outputs[].push=true.

  • "local": этот тип экспорта записывает все файлы результата в каталог на клиенте. Новые файлы будут принадлежать текущему пользователю. При сборке для нескольких платформ все результаты будут помещены в подкаталоги, соответствующие платформам.

    Назначение необходимо указать в outputs[].dest.

  • "oci": этот тип экспорта записывает результирующий образ или список манифестов в виде tar-архива с макетом образа OCI на клиенте.

    Назначение необходимо указать в outputs[].dest.

  • "tar": этот тип экспорта записывает все файлы результата в один tar-архив на клиенте. При сборке для нескольких платформ все результаты будут помещены в подкаталоги, соответствующие платформам.

    Назначение необходимо указать в outputs[].dest.

path

путь / обязательный

Путь к среде сборки.

platform

список / элементы=строка

Платформы в формате os[/arch[/variant]].

Начиная с community.docker 3.10.0 здесь можно указать список платформ, а не только одну платформу.

pull

логическое значение

При сборке образа загружать все обновления образа FROM из Dockerfile.

Варианты:

  • false ← (по умолчанию)
  • true

rebuild

строка

Определяет поведение модуля, если собираемый образ (указанный в name и tag) уже существует.

Варианты:

  • "never" ← (по умолчанию)
  • "always"

secrets

список / элементы=словарь

добавлено в community.docker 3.10.0

Секреты, предоставляемые процессу сборки.

env

строка

Значение секрета в среде.

Поддерживается и является обязательным только для secrets[].type=env.

id

строка / обязательный

Идентификатор секрета.

Секрет будет доступен в контейнере в виде файла по пути /run/secrets/<id>.

src

путь

Исходный путь к секрету.

Поддерживается и является обязательным только для secrets[].type=file.

type

строка / обязательный

Тип секрета.

Варианты:

  • "env": считывает секрет из переменной среды на целевом узле.

    Имя переменной среды необходимо указать в secrets[].env.

    Обратите внимание, что для этого требуется плагин Buildkit версии 0.6.0 или новее.

  • "file": считывает секрет из файла на целевом узле.

    Файл необходимо указать в secrets[].src.

  • "value": предоставляет секрет из заданного значения secrets[].value.

    Обратите внимание, что секрет будет передан в docker compose в виде переменной среды. Если вы считаете этот способ недостаточно безопасным, используйте другой способ передачи.

    Обратите внимание, что для этого требуется плагин Buildkit версии 0.6.0 или новее.

value

строка

Значение секрета.

Обратите внимание, что секрет будет передан в docker compose в виде переменной среды. Если вы считаете этот способ недостаточно безопасным, используйте другой способ передачи.

Поддерживается и является обязательным только для secrets[].type=value.

shm_size

строка

Размер /dev/shm в формате <number>[<unit>]. Число должно быть положительным целым числом. Единица измерения может быть B (байт), K (кибибайт, 1024 Б), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт).

Если единица измерения не указана, по умолчанию используются байты. Если размер не указан, служба Docker daemon использует 64M.

tag

строка

Тег для имени образа name, которому назначается тег.

Если формат name — name:tag, значение тега из name будет иметь приоритет.

По умолчанию: "latest"

target

строка

При сборке образа указывает промежуточный этап сборки по имени, который будет использоваться как конечный этап результирующего образа.

tls

логическое значение

Защитить соединение с API с помощью TLS, не проверяя подлинность сервера узла Docker. Обратите внимание: если validate_certs также установлен в значение true, этот параметр будет иметь приоритет.

Если значение не указано в задаче, вместо него используется значение переменной среды DOCKER_TLS. Если переменная среды не задана, используется значение по умолчанию.

Варианты:

  • false ← (по умолчанию)
  • true

tls_hostname

строка

При проверке подлинности сервера узла Docker укажите ожидаемое имя сервера.

Если значение не указано в задаче, вместо него используется значение переменной среды DOCKER_TLS_HOSTNAME. Если переменная среды не задана, используется значение по умолчанию.

validate_certs

псевдонимы: tls_verify

логическое значение

Защитить соединение с API с помощью TLS и проверить подлинность сервера узла Docker.

Если значение не указано в задаче, вместо него используется значение переменной среды DOCKER_TLS_VERIFY. Если переменная среды не задана, используется значение по умолчанию.

Варианты:

  • false ← (по умолчанию)
  • true

Атрибуты

Атрибут

Поддержка

Описание

action_group

Группы действий: community.docker.docker, docker

Используйте group/docker или group/community.docker.docker в module_defaults, чтобы задать значения по умолчанию для этого модуля.

check_mode

Поддержка: полная

Может выполняться в режиме check_mode и возвращать прогноз изменения статуса, не изменяя целевой объект.

diff_mode

Поддержка: отсутствует

В режиме diff будут возвращены сведения об изменениях (или о том, что, возможно, требуется изменить в check_mode).

idempotent

Поддержка: частичная

Если rebuild=always, модуль не является идемпотентным.

При повторном запуске с теми же аргументами вне режима проверки второй вызов указывает на отсутствие изменений.

Предполагается, что система, которой управляет модуль или к которой он обращается, не изменилась существенным образом.

Примечания

Примечание

  • Подключиться к демону Docker можно, передав параметры в каждой задаче или задав переменные среды. Можно определить DOCKER_HOST, DOCKER_TLS_HOSTNAME, DOCKER_API_VERSION, DOCKER_CERT_PATH, DOCKER_TLS, DOCKER_TLS_VERIFY и DOCKER_TIMEOUT. Если вы используете docker machine, запустите поставляемый с продуктом скрипт, который настраивает среду. Он задаст эти переменные за вас. Подробнее см. в разделе https://docs.docker.com/machine/reference/env/.
  • Этот модуль не использует Docker SDK for Python для взаимодействия с демоном Docker. Он напрямую вызывает программу Docker CLI.

См. также

См. также

community.docker.docker_image_push

Отправка образов Docker в реестры.

community.docker.docker_image_tag

Добавление к образам Docker новых имён и/или тегов.

Примеры

---
- name: Build Python 3.12 image
  community.docker.docker_image_build:
    name: localhost/python/3.12:latest
    path: /home/user/images/python
    dockerfile: Dockerfile-3.12

- name: Build multi-platform image
  community.docker.docker_image_build:
    name: multi-platform-image
    tag: "1.5.2"
    path: /home/user/images/multi-platform
    platform:
      - linux/amd64
      - linux/arm64/v8

Возвращаемые значения

Общие возвращаемые значения описаны здесь; ниже перечислены поля, уникальные для этого модуля:

Ключ

Описание

command

список / элементы=строка

добавлено в community.docker 4.2.0

Выполненная команда.

Возвращается: при успехе и некоторых сбоях

image

словарь

Результаты проверки затронутого образа.

Возвращается: при успехе

Пример: {}

Авторы

  • Felix Fontein (@felixfontein)

Ссылки на коллекцию

  • Отслеживание проблем
  • Репозиторий (исходный код)
  • Запросить помощь (Docker)
  • Запросить помощь (Docker Compose)
  • Запросить помощь (Docker Swarm)
  • Отправить отчёт об ошибке
  • Запросить новую функцию
  • Связь

© 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/docker_image_build_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API