从 dockerhub 拉取最新的镜像
Pulling the latest image from dockerhub
假设dockerhub上有一个用户仓库,里面有3个镜像。图片被标记为 A
、B
和 C
。这里 C
是我的最新标签。
现在我不知道这些标签。当我执行 docker pull user/image
时,这会给我一个错误提示 Tag latest not found in repository docker.io/user/image
。我怎样才能拉取带有最新标签的图像(在这种情况下为C
)。
是的,我完全同意:最新的标签令人困惑。 latest 标签实际上并不一定指向你的镜像的最新版本。一起来看看:
1) 当你拉取一个没有指定标签名的镜像时,Docker会尝试拉取标签为'latest'
的镜像
2) 如果您在将操作推送到注册表之前未标记图像,Docker 将自动为其添加 'latest' 标记
3) 当你标记你的图像时,听起来就像你在做的那样,Docker 永远不会用 'latest' 标记任何东西;然后您必须手动应用 'latest' 标签
从我的角度来看,'latest' 标签应该是 'default' 标签,并且理解为在拉取命令中未指定标签名称时从注册表中拉取的默认图像。
有关如何应用多个标签的更多信息,请参阅此答案:
How to create named and latest tag in Docker?
我想我得到了问题的答案:
curl -s -S "https://registry.hub.docker.com/v2/repositories/repo/image/tags/" | jq '."results"[]["name"]'
将给我 dockerhub 存储库中所有标签的列表。然后我可以轻松地用 sed -n 1p
管道来获取最新的提交。
想 'latest' 标签的一种方式就像 git 中的 'master' 标签。事实上,我希望他们能这样称呼它!
如果您在未指定分支的情况下克隆 git 存储库,您将获得 'master' 分支,即使最近可能已将更新推送到其他分支。
如果您拉取 Docker 图片,您将获得 'latest' 标签,即使其他图片最近可能已推送到其他标签上 :-)
假设dockerhub上有一个用户仓库,里面有3个镜像。图片被标记为 A
、B
和 C
。这里 C
是我的最新标签。
现在我不知道这些标签。当我执行 docker pull user/image
时,这会给我一个错误提示 Tag latest not found in repository docker.io/user/image
。我怎样才能拉取带有最新标签的图像(在这种情况下为C
)。
是的,我完全同意:最新的标签令人困惑。 latest 标签实际上并不一定指向你的镜像的最新版本。一起来看看:
1) 当你拉取一个没有指定标签名的镜像时,Docker会尝试拉取标签为'latest'
的镜像2) 如果您在将操作推送到注册表之前未标记图像,Docker 将自动为其添加 'latest' 标记
3) 当你标记你的图像时,听起来就像你在做的那样,Docker 永远不会用 'latest' 标记任何东西;然后您必须手动应用 'latest' 标签
从我的角度来看,'latest' 标签应该是 'default' 标签,并且理解为在拉取命令中未指定标签名称时从注册表中拉取的默认图像。
有关如何应用多个标签的更多信息,请参阅此答案: How to create named and latest tag in Docker?
我想我得到了问题的答案:
curl -s -S "https://registry.hub.docker.com/v2/repositories/repo/image/tags/" | jq '."results"[]["name"]'
将给我 dockerhub 存储库中所有标签的列表。然后我可以轻松地用 sed -n 1p
管道来获取最新的提交。
想 'latest' 标签的一种方式就像 git 中的 'master' 标签。事实上,我希望他们能这样称呼它!
如果您在未指定分支的情况下克隆 git 存储库,您将获得 'master' 分支,即使最近可能已将更新推送到其他分支。
如果您拉取 Docker 图片,您将获得 'latest' 标签,即使其他图片最近可能已推送到其他标签上 :-)