获取构建的最后一个Docker镜像

时间:2018-06-10 19:33:35

标签: docker

此命令提供按上次构建时间从上到下排序的图像和容器ID列表:

docker images

我的所有docker镜像都附加了hash git head commit。

结果

REPOSITORY                                 TAG                 IMAGE ID            CREATED             SIZE
username/play-table-of-contents-1474f94    latest              6141b8177c2f        34 minutes ago      149MB
username/play-table-of-contents-2616f5f    latest              2b5422dd91ba        About an hour ago   149MB

有没有办法只按名字获取最后一张图片? (即:案例6141b8177c2f)

我试过

docker images --format "{{.Names}}"

我的最终目标是运行最后一个建立的docker镜像。要做到这一点,我需要

  1. 获取bash脚本变量中的最后一个图像名称。
  2. docker run ... $last_image ...

4 个答案:

答案 0 :(得分:3)

简答

docker run ... $(docker ps -a --format "{{.Names}}" | head -1) ...

docker ps -a按顺序" Last to First"返回已停止和正在运行的容器。

答案 1 :(得分:2)

Docker命令docker images 列出最近创建的图像

以下命令列出上面列表中的第一张图片。我相信你正在寻找这个命令。

docker images | awk '{print $1}' | awk 'NR==2'

您可能会从命令

部署图像的容器
docker run $(docker images | awk '{print $1}' | awk 'NR==2')

答案 2 :(得分:1)

Powershell

docker images --format "{{.ID}}" | select -first 1

与docker run结合使用的示例:

docker run -it (docker images --format "{{.ID}}" | select -first 1)

重击

docker images --format='{{.ID}}' | head -1

与docker run结合使用的示例:

docker run -it $(docker images --format='{{.ID}}' | head -1)

答案 3 :(得分:0)

所有其他答案的解决方案都依赖于 docker image 已经对输出进行排序的事实。这可能不正确。一致的解决方案是按创建日期对它们进行排序,并获取最新的日期。我使用了以下命令,这是一致的。

docker images --format "{{.ID}} {{.CreatedAt}}" | sort -rk 2 | awk 'NR==1{print $1}'

此命令对docker images命令的输出进行排序,并按CreatedAt对其进行排序,并打印最新映像的ID。