Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将docker映像推送到新docker hub帐户失败_Docker_Dockerhub - Fatal编程技术网

将docker映像推送到新docker hub帐户失败

将docker映像推送到新docker hub帐户失败,docker,dockerhub,Docker,Dockerhub,我需要更改我将图像推送到的Docker Hub帐户。我使用docker login来更新我的.dockercfg文件,然后运行以下(帐户,图像,和标记作为我实际值的通用占位符): docker推送帐户/图像:标记 我立即发现以下错误: 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 rep

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

docker推送帐户/图像:标记

我立即发现以下错误:

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
推送引用存储库[帐户/图像](len:1)
发送图像列表
2014/12/11 21:26:59错误:状态400尝试推送存储库回购/映像:
“拒绝访问:是私有映像”docker推送帐户/映像:标记
返回退出代码1操作docker推送回购/图像:标记失败

我试图推送到docker hub上的一个私有存储库,但我已经仔细检查了我的auth是否匹配。为什么会出现这种故障?我该如何修复它?

我仍然不完全理解为什么会发生这种情况,但我找到了解决方法。我销毁了本地机器上的所有图像和容器,并重建了图像。在我做到这一点之后,我就能够进入新的账户

我的理论是,我最初创建的Docker映像依赖于以前版本中存在的层,并且旧帐户可用。一旦我切换到新帐户,我试图推送一个依赖于Docker Hub中不再存在的层的图像,导致该层找不到,这导致Docker Hub认为我试图访问的东西必须是私有的,而实际上它并不存在


以上所有这些都是纯粹的猜测,因此我很高兴能得到在这方面有更多知识和/或经验的人的启发。

我也经历过同样的问题,原因是一个私人的家长形象。如上所述,您的图像构建在基础图像和大多数情况下的父图像之上。当您尝试将最新更改推送到docker hub时,您的帐户应该可以访问所有父映像,否则会导致此错误。在我的例子中,我尝试推送的用户无法访问我用作基础的图像

您可以通过散列很容易地识别私有图像

docker images -a | grep <hash>
docker图像-a | grep
如果您有权访问专用存储库,则可以通过将要推送的用户添加到协作者列表来解决此问题。 但是,如果不这样做,则必须为用户标记私有存储库,并手动应用其余更改


希望这有帮助;)

我刚才也遇到了同样的问题。在我的例子中,我的Dockerfile中有一条指令“FROM ubuntu:latest”。在本例中,我使用我的旧帐户创建了图像,为此,我下载了ubuntu:latest来创建它,但这次下载是使用我以前的帐户完成的,因此,我只是从我的计算机中删除了ubuntu:latest(这是使用的基本图像),然后再次创建了我的图像。在这之后,我能够推广我的形象。

我也遇到了这个问题,布鲁诺的评论似乎解决了这个问题。下面是一个用于删除图像的快速bash注释(假设您有DockerFile和自动化来重新创建它们):
docker images | awk{print$3}| xargs docker rmi-f

发生这种情况时,我正在使用最新的docker,从ubuntu构建:trusty。 删除所有图像没有帮助。我将父图像标签从trusty更改为旧的trusty-20150630