将docker图像推送到新的docker中心帐户失败

我需要更改我推送图像的Docker Hub帐户。 我使用docker login更新我的.dockercfg文件,然后运行以下( accountimagetag作为我的实际值通用占位符):

docker push account/image:tag

我马上得到以下错误:

 The push refers to a repository [account/image] (len: 1) Sending image list 2014/12/11 21:26:59 Error: Status 400 trying to push repository repo/image: "Access denied: <hash> is a private image" docker push account/image:tag returned exit code 1action docker push repo/image:tag failed 

我试图推到docker集线器上的私人存储库,但我已经仔细检查,我的身份validation匹配。 为什么这个失败,我该如何解决?

我仍然不完全明白为什么发生这种情况,但我想出了如何解决这个问题。 我销毁了本地机器上的所有图像和容器,并重build了图像。 我这样做后,我能够推到新的帐户。

我的理论是,我最初创build的Docker镜像取决于以前版本中存在的图层,并且旧帐户可用。 一旦我切换到新帐户,我试图推送一个依赖于Docker Hub中不存在的图层的图像,导致该层没有被发现,导致Docker Hub认为我试图访问的东西必须是私有的,当它实际上只是不存在。

以上所有内容都是非常纯粹的猜想,所以我很高兴能被在这方面有更多知识和/或经验的人所启发。

我经历了同样的问题,原因竟然是一个私人的父母形象。 正如这里所解释的那样,您的图像build立在基本图像之上,并且在大多数情况下是父图像。 当您尝试将最新更改推送到docker中心时,您的帐户应该可以访问所有父图像,否则会导致此错误。 在我的情况下,我试图推动的用户没有访问我用作基地的图像。

您可以通过散列来轻松识别私人图像。

 docker images -a | grep <hash> 

如果您有权访问私有存储库,则可以通过将您推送的用户添加到协作者列表来解决此问题。 但是,如果您不这样做,则必须为您的用户标记私有存储库,然后手动应用其余的更改。

希望这可以帮助 ;)

我在这里遇到了同样的问题。 在我的情况下,我在我的Dockerfile中的指令“FROM ubuntu:latest”。 在这种情况下,我使用我的旧帐户构build了映像,为此,我下载了ubuntu:latest创build它,但是这个下载是使用我以前的帐户完成的,所以,我刚删除了ubuntu:latest使用的基本图像)从我的电脑,并再次build立我的形象。 之后,我能够推动我的形象。

我也遇到了这个问题,布鲁诺的评论似乎解决了这个问题。 这里是一个快速bash评论删除您的图像(这是假设你有DockerFiles和自动化,以重新创build它们):docker images | awk'{print $ 3}'| xargs docker rmi -f

我正在使用最新的Docker,从Ubuntu的build设:可靠的,当这种情况发生。 删除所有图像没有帮助。 我把父母的图像标签从可靠变成了更老的trusty-20150630。