从dockerhub

时间:2016-06-01 10:02:57

标签: docker dockerhub

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

现在我不知道这些标签。当我执行docker pull user/image时,这会给我一个错误,说Tag latest not found in repository docker.io/user/image。如何使用最新标记(在这种情况下为C)拉取图像。

3 个答案:

答案 0 :(得分:4)

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

1)当您在未指定标签名称的情况下拉取图像时,Docker将尝试拉出标记为“最新”的图像

2)如果在推送操作到注册表之前没有标记图像,Docker会给它最新的'自动标记

3)当您对图像进行标记时,听起来就像您正在做的那样,Docker绝不会使用“最新”标记任何内容。然后,您必须应用最新的'手动标记

从我的观点来看,最新的'标签应该是默认的'而不是标记,并且在pull命令中未指定标记名称时,将其理解为从注册表中提取的默认图像。

有关如何应用多个标记的更多信息,请参阅此答案: How to create named and latest tag in Docker?

答案 1 :(得分:2)

一种思考“最新”的方法。标签就像'主人' git中的标签。事实上,我希望他们称之为!

如果您在没有指定分支的情况下克隆git仓库,您将获得' master'尽管最近可能已经在其他分支上推送了更新。

如果您提取Docker镜头,您将获得最新的'标签,即使其他图像可能最近被推送到其他标签上: - )

答案 2 :(得分:0)

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

curl -s -S "https://registry.hub.docker.com/v2/repositories/repo/image/tags/" | jq '."results"[]["name"]'将为我提供dockerhub存储库中所有标记的列表。然后我可以使用sed -n 1p轻松管道这个以获取最新的提交。