从dockerhub中提取最新的图像

假设在dockerhub上有一个拥有3个图像的用户仓库。 图像被标记为ABC 这里C是我最新的标签。

现在我不知道这些标签。 当我做一个docker pull user/image ,这给了我一个错误,说Tag latest not found in repository docker.io/user/image 。 我怎样才能用最新的标签(在这种情况下, C )拉图像。

是的,我绝对同意:最新的标签是混乱的。 最新的标签实际上并不一定指向您的图像的最新版本。 我们来看一下:

1)当你拉一个图像,但没有指定标签名称时,Docker将尝试拉图像标记为“最新”

2)当您在对registry进行推送操作之前没有标记图像时,Docker会自动为其提供“最新”标签

3)当你做标记你的图像,这听起来就是你在做什么,Docker永远不会标记任何'最新'; 然后您必须手动应用“最新”标签

从我的观点来看,“最新”标签应该是一个“默认”标签,并且在pull命令中没有指定标签名称的情况下,将它理解为从registry中取出的默认图像。

有关如何应用多个标记的更多信息,请参阅此答案: 如何在Docker中创build命名标记和最新的标记?

想想“最新”标签的一种方式就像git中的“master”标签。 事实上,我希望他们这样称呼它!

如果你克隆一个没有指定分支的git仓库,你将会得到'master'分支,即使更新可能在最近被其他分支推送了。

如果你拉一个Docker镜像,你会得到'最新'的标签,尽pipe其他图片可能已经被推到了最近的其他标签上:-)

我想我得到了我的问题的答案:

curl -s -S "https://registry.hub.docker.com/v2/repositories/repo/image/tags/" | jq '."results"[]["name"]' curl -s -S "https://registry.hub.docker.com/v2/repositories/repo/image/tags/" | jq '."results"[]["name"]'会给我dockerhub仓库中所有标签的列表。 然后,我可以很容易地用sed -n 1p来获取最新的提交。