Docker pull - 强制下载

26

是否有强制拉取 Docker 镜像的可能性?

我已经重新部署了 Docker 镜像到另一个仓库,但当我调用时

docker pull anotherrepo:port/my/image

没有任何东西被下载,取而代之的是我收到了信息:

Digest: sha256:somehash

并且该镜像是最新的。

docker rm/rmi无法使用,因为镜像是从originalrepo:port/my/image下载的,我不想为了测试目的而停止/删除它。

是否有可能强制拉取以检查镜像是否正确推送?


1
您可以使用docker rmi <your_image_id>命令删除旧镜像并尝试重新下载整个镜像。 - Dhaval Chaudhary
docker rm 然后 docker pull - papey
你能提供“docker pull”的完整日志吗? - yamenk
3个回答

14
以下操作应该可行。您需要添加一个临时标签以避免图像被删除,删除原始标签,然后进行提取:

以下操作应该可行。您需要添加一个临时标签以避免图像被删除,删除原始标签,然后进行提取:

docker tag "$originalTag" "tmpTag"
docker rmi "$originalTag"
docker pull "$originalTag"
docker rmi "tmpTag"

1
我认为像我这样的OP正在考虑在docker pull中添加一个简单的标志来实现这一点。当然,使用docker rmi删除镜像是可行的,但是否有一种始终强制检索最新版本的方法,类似于在Kubernetes中始终拉取镜像的方式呢? - cryanbhu
3
对于 docker build,可以使用 docker build --pull 强制每次构建时重新下载。目前 docker rundocker pull 没有类似的选项。 - Maximilian Mordig
为什么需要先标记为tmpTag? - eastwater

0

0

我认为答案在摘要中。

使用v2或更高版本格式的图像具有称为摘要的内容可寻址标识符。只要用于生成图像的输入未更改,摘要值就是可预测的。

来源:https://docs.docker.com/engine/reference/commandline/images/#list-the-full-length-image-ids

也许您不需要验证推送是否成功,因为Docker可以通过使用摘要自动执行此操作,但我不确定是否确实如此。

我能想到的唯一其他方法是从具有对新存储库的访问权限的不同计算机上拉取。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接