从 dockerhub 拉取最新映像



>假设 dockerhub 上有一个用户存储库,其中包含 3 个映像。图像被标记为 ABC 。这里C是我的最新标签。

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

是的,我完全同意:最新的标签令人困惑。最新标记实际上不一定指向映像的最新版本。一起来看看:

1) 当您拉取未指定标签名称的镜像时,Docker 将尝试拉取标记为"最新"的镜像

2) 当您在将映像推送到注册表之前没有标记映像时,Docker 会自动为其提供"最新"标记

3)当你标记你的镜像并且听起来这就是你正在做的事情时,Docker永远不会用"最新"标记任何东西;然后,您必须手动应用"最新"标签

从我的角度来看,"最新"标签应该是"默认"标签,并且被理解为从注册表中提取的默认映像,当 pull 命令中未指定标签名称时。

有关如何

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

考虑"最新"标签的一种方式就像 git 中的"master"标签。 事实上,我希望他们这么称呼它!

如果在未指定分支的情况下克隆 git 存储库,您将获得"master"分支,即使最近可能已在其他分支上推送了更新。

如果您拉取 Docker 映像,您将获得"最新"标签,即使其他映像最近可能已推送到其他标签上:-)

我想

我得到了问题的答案:

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

您还可以使用以下格式:

https://github.com/koudaiii/qucli/issues/47#issuecomment-503066074

最新更新