>假设 dockerhub 上有一个用户存储库,其中包含 3 个映像。图像被标记为 A
、 B
和 C
。这里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