Spec-Zone.ru › Ansible

Модуль community.docker.docker_image_build – Построение образов Docker с помощью Docker buildx

Примечание

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

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

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

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

Впервые появился в community.docker 3.6.0

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

Обзор

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

Требования

Ниже перечислены требования к хосту, на котором выполняется этот модуль.

  • Клиентская утилита Docker с плагином Docker buildx

Параметры

Параметр

Комментарии

api_version

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

строка

Версия API Docker, работающая на хосте Docker.

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

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

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

args

словарь

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

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

ca_path

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

путь

Используйте сертификат CA при проверке сервера, указав путь к файлу сертификата CA.

Если значение не указано в задаче и переменная окружения 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-сокету для подключения к Docker API. Для подключения к удалённому хосту укажите строку 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.

context

строка

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

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

dest

путь

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

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

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

name

строка

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

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

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

push

булево

Производить ли загрузку созданного образа в реестр.

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

Варианты:

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

type

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

Тип экспортера.

Варианты:

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

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

    Контекст 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 или новее.

значение

строка

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

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

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

shm_size

строка

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

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

тег

строка

Тег для имени образа name, который должен быть помечен.

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

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

цель

строка

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

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

Поддержка: нет

Вернет подробную информацию о том, что изменилось (или, возможно, требует изменения в check_mode), при работе в режиме diff.

Примечания

Примечание

  • Подключение к демону 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 для 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

Значения возврата

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

Ключ

Описание

image

словарь

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

Возвращено: успешно

Пример: {}

Авторы

  • Felix Fontein (@felixfontein)

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

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

© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/community/docker/docker_image_build_module.html

Spec-Zone.ru

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