如何识别首先在Docker中创建的图像?这些是相同的图像,但悬空= true

时间:2018-10-22 06:32:49

标签: bash docker

例如:如果我们有两个悬空的真图像

REPOSITORY   TAG       IMAGE ID        CREATED        SIZE
<none>       <none>    1e31f1b438dd    2 days ago     1.05GB
<none>       <none>    36ee72bdfe7e    2 days ago     1.05GB


docker inspect --format {{.Created}} 1e31f1b438dd

输出: 2018-10-19T15:02:24.708170378Z

docker inspect --format {{.Created}} 36ee72bdfe7e

输出: 2018-10-19T14:57:58.087478393Z

我们如何识别bash脚本首先创建哪个图像?是否可以在bash脚本中格式化这些日期?

1 个答案:

答案 0 :(得分:0)

尝试以下bash命令:

docker image ls --format '{{.ID}}' --filter=dangling=true \
  | uniq \
  | xargs docker inspect --format '{{.Created}} {{.ID}}' \
  | sort -k1n

它将产生如下输出:

2018-09-04T07:29:06.314409018Z sha256:ef1281090a...
2018-09-04T14:29:22.209618542Z sha256:153a2e0699...
2018-10-16T12:21:55.811570654Z sha256:d9efb0a163...
2018-10-19T13:56:47.628606083Z sha256:b1ba405fdb...

逐行说明:

  1. 获取所有悬空图像的ID
  2. 过滤掉重复项(如果您使用多个标签标记一个图像)
  3. 获取CreatedID的图像
  4. 按升序排列

如果只想获取最早的图像(首先创建的图像),请执行以下操作:

docker image ls --format '{{.ID}}' --filter=dangling=true \
  | uniq \
  | xargs docker inspect --format '{{.Created}} {{.ID}}' \
  | sort -k1n \
  | head -n 1 \
  | awk '{print $2}'