community.docker.docker_image_info 模块 – 检查 Docker 镜像

注意

此模块是 community.docker 集合(版本 4.1.0)的一部分。

如果您正在使用 ansible 包,您可能已经安装了这个集合。 它不包含在 ansible-core 中。 要检查是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install community.docker。您需要进一步的要求才能使用此模块,请参阅要求了解详细信息。

要在 Playbook 中使用它,请指定:community.docker.docker_image_info

概要

  • 提供一个或多个镜像名称,模块将检查每个镜像,并返回检查结果的数组。

  • 如果镜像在本地不存在,则不会出现在结果中。如果要检查镜像在本地是否存在,可以使用镜像名称调用模块,然后检查结果列表是否为空(镜像不存在)或是否包含一个元素(镜像在本地存在)。

  • 该模块不会尝试从注册表中拉取镜像。使用 community.docker.docker_image 并使用 source=pull 来确保拉取镜像。

要求

执行此模块的主机需要满足以下要求。

  • Docker API >= 1.25

  • backports.ssl_match_hostname(在 Python 2 上使用 TLS 时)

  • paramiko(当使用 SSH 且 use_ssh_client=false 时)

  • pyOpenSSL(当使用 TLS 时)

  • pywin32(当在 Windows 32 上使用命名管道时)

  • requests

参数

参数

注释

api_version

别名: docker_api_version

字符串

Docker 主机上运行的 Docker API 版本。

默认为此集合和 docker 守护进程支持的最新 API 版本。

如果任务中未指定该值,则将改用环境变量 DOCKER_API_VERSION 的值。 如果未设置环境变量,则将使用默认值。

默认值: "auto"

ca_path

别名: ca_cert, tls_ca_cert, cacert_path

路径

通过提供 CA 证书文件的路径,在执行服务器验证时使用 CA 证书。

如果任务中未指定该值,并且环境变量 DOCKER_CERT_PATH 已设置,则将使用环境变量 DOCKER_CERT_PATH 中指定的目录下的 ca.pem 文件。

此选项在 community.docker 3.6.0 中称为 ca_cert,并重命名为 ca_path。 旧名称已添加为别名,仍可使用。

client_cert

别名: tls_client_cert, cert_path

路径

客户端的 TLS 证书文件的路径。

如果任务中未指定该值,并且环境变量 DOCKER_CERT_PATH 已设置,则将使用环境变量 DOCKER_CERT_PATH 中指定的目录下的 cert.pem 文件。

client_key

别名: tls_client_key, key_path

路径

客户端的 TLS 密钥文件的路径。

如果任务中未指定该值,并且设置了环境变量DOCKER_CERT_PATH,则将使用环境变量DOCKER_CERT_PATH指定目录下的文件key.pem

debug

boolean

调试模式

选择

  • false ← (默认)

  • true

docker_host

别名: docker_url

字符串

用于连接 Docker API 的 URL 或 Unix 套接字路径。要连接到远程主机,请提供 TCP 连接字符串。例如,tcp://192.0.2.23:2376。如果使用 TLS 加密连接,模块会自动将连接 URL 中的 tcp 替换为 https

如果任务中未指定该值,则将使用环境变量DOCKER_HOST的值。如果未设置环境变量,则将使用默认值。

默认值: "unix:///var/run/docker.sock"

name

list / elements=string

一个镜像名称或镜像名称列表。名称格式为 name[:tag]repository/name[:tag],其中 tag 是可选的。如果未提供标签,则将使用 latest。也可以使用镜像 ID 代替镜像名称。

如果未提供名称,则将返回所有镜像的列表。

timeout

integer

等待 API 响应的最大时间(秒)。

如果任务中未指定该值,则将使用环境变量DOCKER_TIMEOUT的值。如果未设置环境变量,则将使用默认值。

默认值: 60

tls

boolean

通过使用 TLS 加密与 API 的连接,而不验证 Docker 主机服务器的真实性。请注意,如果同时将 validate_certs 设置为 true,则以前者为准。

如果任务中未指定该值,则将使用环境变量DOCKER_TLS的值。如果未设置环境变量,则将使用默认值。

选择

  • false ← (默认)

  • true

tls_hostname

字符串

在验证 Docker 主机服务器的真实性时,请提供服务器的预期名称。

如果任务中未指定该值,则将使用环境变量DOCKER_TLS_HOSTNAME的值。如果未设置环境变量,则将使用默认值。

请注意,此选项在较旧的版本中的默认值为 localhost。它已在 community.docker 3.0.0 中删除。

use_ssh_client

boolean

在 community.docker 1.5.0 中添加

对于 SSH 传输,请使用 ssh CLI 工具,而不是 paramiko。

选择

  • false ← (默认)

  • true

validate_certs

别名: tls_verify

boolean

通过使用 TLS 并验证 Docker 主机服务器的真实性来保护与 API 的连接。

如果任务中未指定该值,则将使用环境变量DOCKER_TLS_VERIFY的值。如果未设置环境变量,则将使用默认值。

选择

  • false ← (默认)

  • true

属性

属性

支持

描述

action_group

操作组: community.docker.docker, docker

module_defaults 中使用 group/dockergroup/community.docker.docker 为此模块设置默认值。

check_mode

支持: 完全

此操作不会修改状态。

可以在 check_mode 中运行,并在不修改目标的情况下返回更改状态预测。

diff_mode

支持: 不适用

此操作不会修改状态。

当处于 diff 模式时,将返回有关已更改的内容(或可能需要在 check_mode 中更改的内容)的详细信息。

备注

注意

示例

- name: Inspect a single image
  community.docker.docker_image_info:
    name: pacur/centos-7

- name: Inspect multiple images
  community.docker.docker_image_info:
    name:
      - pacur/centos-7
      - sinatra
  register: result

- name: Make sure that both images pacur/centos-7 and sinatra exist locally
  ansible.builtin.assert:
    that:
      - result.images | length == 2

返回值

通用返回值记录在这里,以下是此模块独有的字段

描述

images

list / elements=dictionary

所选镜像的检查结果。

该列表仅包含本地存在的镜像的检查结果。

返回: 总是

示例: [{"Architecture": "amd64", "Author": "", "Comment": "", "Config": {"AttachStderr": false, "AttachStdin": false, "AttachStdout": false, "Cmd": ["/etc/docker/registry/config.yml"], "Domainname": "", "Entrypoint": ["/bin/registry"], "Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"], "ExposedPorts": {"5000/tcp": {}}, "Hostname": "e5c68db50333", "Image": "c72dce2618dc8f7b794d2b2c2b1e64e0205ead5befc294f8111da23bd6a2c799", "Labels": {}, "OnBuild": [], "OpenStdin": false, "StdinOnce": false, "Tty": false, "User": "", "Volumes": {"/var/lib/registry": {}}, "WorkingDir": ""}, "Container": "e83a452b8fb89d78a25a6739457050131ca5c863629a47639530d9ad2008d610", "ContainerConfig": {"AttachStderr": false, "AttachStdin": false, "AttachStdout": false, "Cmd": ["/bin/sh", "-c", "#(nop) CMD [\"/etc/docker/registry/config.yml\"]"], "Domainname": "", "Entrypoint": ["/bin/registry"], "Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"], "ExposedPorts": {"5000/tcp": {}}, "Hostname": "e5c68db50333", "Image": "c72dce2618dc8f7b794d2b2c2b1e64e0205ead5befc294f8111da23bd6a2c799", "Labels": {}, "OnBuild": [], "OpenStdin": false, "StdinOnce": false, "Tty": false, "User": "", "Volumes": {"/var/lib/registry": {}}, "WorkingDir": ""}, "Created": "2016-03-08T21:08:15.399680378Z", "DockerVersion": "1.9.1", "GraphDriver": {"Data": null, "Name": "aufs"}, "Id": "53773d8552f07b730f3e19979e32499519807d67b344141d965463a950a66e08", "Name": "registry:2", "Os": "linux", "Parent": "f0b1f729f784b755e7bf9c8c2e65d8a0a35a533769c2588f02895f6781ac0805", "RepoDigests": [], "RepoTags": ["registry:2"], "Size": 0, "VirtualSize": 165808884}]

作者

  • Chris Houseknecht (@chouseknecht)