一尘不染

如何检查本地是否存在带有特定标签的Docker映像?

docker

我想找出本地是否存在带有特定标签的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

阅读 336

收藏
2020-06-17

共1个答案

一尘不染

我通常会测试的结果docker images -q(如以下脚本所示):

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
在不存在的图像上,退出状态将为非0

正如iTayb在评论中指出的:

  • docker images -q在具有大量图像的计算机上,该方法可能会变得很慢。在6,500张图像的计算机上运行需要44秒。
  • docker image inspect立即返回。
2020-06-17