community.docker.docker_image_build 模块 – 使用 Docker buildx 构建 Docker 镜像
注意
此模块是 community.docker 集合(版本 4.1.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 的 buildx 插件 (BuildKit) 构建 Docker 镜像。
请注意,该模块在经典 Ansible 模块的意义上是非幂等的。唯一的幂等性检查是已构建的镜像是否已存在。可以使用
rebuild
选项禁用此检查。
要求
在执行此模块的主机上需要以下要求。
带有 Docker buildx 插件的 Docker CLI
参数
参数 |
注释 |
---|---|
在 Docker 主机上运行的 Docker API 的版本。 默认为此集合和 docker 守护程序支持的最新版本的 API。 如果未在任务中指定该值,则将改用环境变量 默认值: |
|
提供一个 Docker 期望该值为字符串。为方便起见,任何非字符串值都将转换为字符串。 |
|
通过提供 CA 证书文件的路径,在执行服务器验证时使用 CA 证书。 如果未在任务中指定该值且设置了环境变量 |
|
要考虑作为缓存源的镜像名称列表。 |
|
要使用的 Docker CLI 上下文。 与 |
|
客户端的 TLS 证书文件的路径。 如果未在任务中指定该值且设置了环境变量 |
|
客户端的 TLS 密钥文件的路径。 如果未在任务中指定该值且设置了环境变量 |
|
Docker CLI 的路径。如果未提供,将在 |
|
用于连接 Docker API 的 URL 或 Unix 套接字路径。要连接到远程主机,请提供 TCP 连接字符串。例如, 如果任务中未指定该值,则将使用环境变量 与 |
|
提供构建镜像时要使用的 Dockerfile 的备用名称。 这还可以包括一个相对路径(相对于 |
|
在构建容器时添加到 除了 IP 地址之外,还可以使用特殊值 |
|
键值对字典。 |
|
镜像名称。名称格式将为以下之一: 请注意,不能使用镜像 ID(哈希值)和带有摘要的名称。 |
|
用于 |
|
构建镜像时不使用缓存。 选择
|
|
输出目标。 您可以提供一个导出器列表,以将构建的镜像导出到各个位置。请注意,并非所有导出器都可能受所使用的构建驱动程序支持。 请注意,根据此选项的使用方式,可能不会创建具有名称 为此选项提供一个空列表等同于完全不指定它。默认行为是具有 |
|
要将结果导入的 Docker 上下文的名称。 对于 |
|
目标路径。 对于 对于 |
|
要使用的导出器类型。 选择
|
|
构建环境的路径。 |
|
格式为 自 community.docker 3.10.0 起,这可以是一个平台列表,而不仅仅是单个平台。 |
|
在构建镜像时,下载 Dockerfile 中 FROM 镜像的任何更新。 选择
|
|
要暴露给构建的机密。 |
|
机密的环境值。 仅支持 |
|
机密标识符。 该机密将以文件形式在容器中的 |
|
机密的源路径。 仅支持 |
|
机密的类型。 选择
|
|
省略单位时,默认使用字节。如果完全省略大小,Docker 守护进程将使用 |
|
在构建镜像时,通过名称指定一个中间构建阶段作为最终镜像的阶段。 |
|
通过使用 TLS 加密与 API 的连接,而不验证 Docker 主机服务器的真实性。请注意,如果 如果在任务中未指定该值,则将使用环境变量 选择
|
|
在验证 Docker 主机服务器的真实性时,提供服务器的预期名称。 如果在任务中未指定该值,则将使用环境变量 |
|
通过使用 TLS 并验证 Docker 主机服务器的真实性来保护与 API 的连接。 如果在任务中未指定该值,则将使用环境变量 选择
|
属性
属性 |
支持 |
描述 |
---|---|---|
操作组: community.docker.docker,docker |
在 |
|
支持:完整 |
可以在 |
|
支持:无 |
当处于 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.net.cn/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
返回值
常见的返回值记录在 此处,以下是此模块特有的字段
键 |
描述 |
---|---|
受影响镜像的镜像检查结果。 返回: 成功 示例: |