如何在 jenkins 中获取 docker 的 Image ID?

Jit*_*ice 7 jenkins jenkins-plugins docker dockerfile docker-compose

我需要通过 Jenkins 运行 docker 容器。为此,我使用“启动/停止 Docker 容器”作为构建步骤

启动/停止 Docker 容器

Action to choose        : Run container
Docker Cloud name       : docker_demo
ID                      : DOCKER_IMAGE_ID
DNS     
Port bindings           :port
Bind all declared ports :   
Hostname                : ip address
Run Code Online (Sandbox Code Playgroud)

在运行作业时,它告诉“ID 无效”。谁能建议,如何在 jenkins 中获取 docker 的 Image ID?

Fra*_*ois 12

基于docker 文档的一个班轮:

sudo docker images --filter=reference=image_name --format "{{.ID}}"
Run Code Online (Sandbox Code Playgroud)

替换image_name为您的实际 docker 映像名称。您可以将该值存储在 shell 变量中以供进一步参考:

IMAGE_ID=$(sudo docker images --filter=reference=image_name --format "{{.ID}}")

然后访问它 $IMAGE_ID


小智 12

解决这个问题的更简单的方法是:

docker images --filter="reference=your_image_name" --quiet
Run Code Online (Sandbox Code Playgroud)

该命令的含义:

  • --filter : 根据名称搜索图像(由your_image_name表示)
  • --quiet :仅返回图像 ID

参考: https: //docs.docker.com/engine/reference/commandline/images/


boo*_*yaa 3

您可以使用以下命令查看 docker 映像 ID(对于您已构建或从 docker hub 提取的映像):docker images

OP评论后更新:

docker images --filter仅实现 dangling=true,因此您无法使用这种方式搜索容器 id。所以你必须依赖 shell 脚本,下面是一个例子:

docker images | grep -E '^golang.*latest' | awk -e '{print $3}' 
Run Code Online (Sandbox Code Playgroud)

您需要定制 grep 中的正则表达式以匹配您的图像名称和标签。

  • docker images --filter 现在支持通过引用搜索 $ docker images --filter=reference='busy*:*libc' 以及格式来选择输出格式,请参阅[文档](https://docs.docker.com /engine/reference/commandline/images/#filtering) (2认同)