我想找出本地是否存在带有特定标签的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)正如iTayb在the comments中指出的:
docker images -q
方法可能会变得非常慢。在6,500张图像的计算机上运行需要44秒。 docker image inspect
立即返回。