假设在dockerhub上有一个用户仓库,里面有3张图片,图片的标签分别是A,B和C,这里C是我最新的标签。 现在我不知道这些标签。当我做一个docker pull user/image,这给了我一个错误,说Tag latest not found in repository docker.io/user/image。我怎么能拉图像与最新的标签(C在这种情况下)。
是的,我绝对同意:latest标签让人困惑。latest标签实际上并不一定指向图像的最新版本。让我们来看看: 1)当您提取图像而不指定标记名称时,Docker将尝试提取标记为“最新”的图像 2)如果您在向注册表执行推送操作之前没有标记图像,Docker将自动为其指定“最新”标记 3)当你标记你的图片,它听起来像是你正在做什么,Docker将永远不会标记任何与'最新';然后,您必须手动应用"latest“标记 从我的观点来看,“latest”标记应该是一个“default”标记,并被理解为从注册表中拉取的默认图像,而在拉取命令中没有指定标记名称。 有关如何应用多个标记的详细信息,请参阅此答案:How to create named and latest tag in Docker?
4条答案
按热度按时间bn31dyow1#
是的,我绝对同意:latest标签让人困惑。latest标签实际上并不一定指向图像的最新版本。让我们来看看:
1)当您提取图像而不指定标记名称时,Docker将尝试提取标记为“最新”的图像
2)如果您在向注册表执行推送操作之前没有标记图像,Docker将自动为其指定“最新”标记
3)当你标记你的图片,它听起来像是你正在做什么,Docker将永远不会标记任何与'最新';然后,您必须手动应用"latest“标记
从我的观点来看,“latest”标记应该是一个“default”标记,并被理解为从注册表中拉取的默认图像,而在拉取命令中没有指定标记名称。
有关如何应用多个标记的详细信息,请参阅此答案:How to create named and latest tag in Docker?
esbemjvw2#
“latest”标签的一种理解方式就像git中的“master”标签,事实上,我希望他们也这么叫它!
如果你克隆一个git repo而没有指定分支,你将得到'master'分支,即使更新可能已经被推送到其他分支。
如果你拉一个Docker图像,你会得到“最新”标签,即使其他图像可能已经被推到其他标签更近:-)
guykilcj3#
我想我得到了我问题的答案:
curl -s -S "https://registry.hub.docker.com/v2/repositories/repo/image/tags/" | jq '."results"[]["name"]'
将给我dockerhub库中所有标记的列表,然后我可以很容易地用sed -n 1p
将其传输到管道中以获得最新的提交。cpjpxq1n4#
您也可以使用以下格式:
https://github.com/koudaiii/qucli/issues/47#issuecomment-503066074