我想找出本地是否存在带有特定标签的Docker镜像。如果Docker客户端无法本地执行此操作,那么我可以使用bash脚本。

只是为潜在的bash脚本提供一些提示,运行docker images命令的结果将返回以下内容:

REPOSITORY                               TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
rabbitmq                                 latest              e8e654c05c91        5 weeks ago         143.5 MB
busybox                                  latest              8c2e06607696        6 weeks ago         2.433 MB
rabbitmq                                 3.4.4               a4fbaad9f996        11 weeks ago        131.5 MB

最佳答案

我通常会测试 docker images -q 的结果(如this script所示):

if [[ "$(docker images -q myimage:mytag 2> /dev/null)" == "" ]]; then
  # do something
fi

但是由于docker images仅将REPOSITORY作为参数,因此您需要在tag上进行grep,而无需使用-q

docker images 立即获取标签(docker 1.8+)[REPOSITORY[:TAG]]
下面提到的另一种方法是使用docker inspect
但是在docker 17+上,图像的语法为: docker image inspect (在不存在的图像上exit status will be non-0)

正如iTaybthe comments中指出的:
  • 在具有大量图像的计算机上,docker images -q方法可能会变得非常慢。在6,500张图像的计算机上运行需要44秒。
  • docker image inspect立即返回。
  • 08-28 08:33