【问题标题】:Delete docker specific images删除 docker 特定的图像
【发布时间】:2019-10-06 04:06:00
【问题描述】:

我需要某种 Docker 行为。想象一下 docker 镜像名称是 imagename 并且镜像也有标签 (1, 2, 3 ...)。现在我想删除名称为imagename 且标签不是x 的所有图像。例如,如果我有图片:

imagename:1
imagename:2
imagename:3
imagename:4
imagename:5
imagename:6

带有 1, 2, 3 ...6 个标签,并且我只想拥有一个名称为 imagename 和标签 6 的图像,我应该运行什么命令?

【问题讨论】:

  • 你已经尝试过什么?是否有您正在考虑的特定工具集(Python Docker API;grepxargs;...)?

标签: linux docker docker-compose docker-container docker-image


【解决方案1】:

我认为单独使用docker 命令是不可能的。我会使用一个小的外壳循环。例如,删除所有 not 标记为 3.6:

python 图像
docker images | awk -v img='python' -v tag='3.6' '$1==img && $2!=tag{print $3}' \
  | while read -r id ; do docker rmi "${id}" ; done

【讨论】:

  • 什么是 2 美元和 3 美元?我知道它们在运行 bash 脚本时作为参数传递,但它们是什么意思? $2 可能是标签,但 $3 呢?
  • 那些变量不是 bash 变量,它们是 awk 变量。它们指的是awk 输入中的列(这是docker images 的输出)
  • 它以某种方式删除了所有名为 python 的图像
  • 原来其中一些具有相同的 ID
  • (1) 它不会删除 python:3.6 图像。 (2)如果他们有相同的id,那么你用不同的名字标记了同一张图片
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-04
  • 1970-01-01
  • 2021-11-27
  • 2021-01-16
  • 1970-01-01
  • 1970-01-01
  • 2017-02-22
相关资源
最近更新 更多