我的问题非常简单,就是在我的图像名称中使用了无效字符(多余的 /):
myusername/something/image
是无效的图片名称。尝试使用 myusername/something-image。希望这能帮助到某人。
__
**。 - ijosephDocker 对于私有仓库的数量也有限制。如果你通过本地机器推送来创建一个私有仓库,它会创建该仓库,但是不能再向其推送或从中拉取任何内容,此时你会收到“请求访问资源被拒绝”的错误信息。
操作系统: Ubuntu16.04
原因: 我删除了客户端配置文件 (~/.docker/config.json)
解决方案:
docker login https://index.docker.io/v1/ -u=yourusername
。 - Ronan Quillevere是的,也许有些尴尬,但这个问题似乎没有清晰的说明文档:我刚刚注册了带有私有存储库的Docker Pro。我创建了一个私有存储库,然后尝试将其推送。结果得到了可怕的“拒绝”消息。
推送到我的公共存储库很顺利,所以我知道我已经正确登录。
在尝试了与Docker Hub相关的前30个答案之后...我终于明白了私有存储库的工作原理:它们与公共存储库相同,但多了一步。
当推送到Docker Hub帐户中的任何存储库时 - 您需要在image:tag
之前添加用户名前缀,例如:
假设以下值:
用户名=yourusername
映像名称=theimage
标签=thetag
1) 对本地映像进行标记(或提交),添加您的用户名前缀:
docker tag theimage:thetag yourusername/theimage:thetag
注意:
docker tag theimage:thetag yourusername/yourorganizationname/theimage:thetag
latest
,可以省略:thetag
部分;如果您没有输入:thetag
部分,Docker会假定您使用了:latest
2) 将带有前缀的镜像推送到Docker Hub:
docker push yourusername/theimage:thetag
或者
docker push yourusername/yourorganizationname/theimage:thetag
额外步骤:
要么
在上述第1步之前,在您的Docker Hub帐户中创建一个私有存储库。
请注意,存储库名称必须与您计划推送的theimage
相同。不要在存储库名称上包含thetag
部分。例如,如果您的镜像是ubuntu:14.04
,则应将存储库命名为ubuntu
。
或者
如果您没有提前创建存储库(这不是必需的!):转到您在Docker Hub上的帐户;单击新推送的repo,然后单击其“设置”选项卡 - 并使您的repo变成私有。
我曾看到其他人使用两个前缀来标记它们的私有repos,例如xyz/abc/theimage:thetag
,我还以为第二个前缀是我创建的,用于将repo标记为私有。不是这样的- 这仅适用于组织。去掉任何第2前缀并将我的repo名称设置为theimage
即可解决我的被拒绝错误!
另一个注意事项:每个repo都包含具有给定repo名称的图像的所有标记版本。因此,例如,ubuntu:latest
和ubuntu:14.04
将同时位于ubuntu
repo中。
玩转Docker!
关于docker如何处理用户ID和仓库名,可能会有些令人困惑。假设你在docker hub上创建了一个用户账户xyz,那么这个新账户会自动建立一个名称空间xyz
,然后你再创建一个名为myrepo的仓库,那么该仓库的名字实际上是xyz/myrepo
。
要推送镜像,应该执行以下操作:
docker push docker.io/xyz/myrepo
您可以添加":latest"或其他标签(tag),如果需要的话。将图片名称更改为“用户名” / “图片名称”
docker logout
然后
docker login
denied: requested access to the resource is denied
,因此我来到这里。$(Build.Repository.Name)
。默认情况下,它是来自Github的存储库名称,但为了使您的推送正常工作,应该是dockerhub_account_username/your_dockerhub_repository_name
。$(Build.Repository.Name)
替换为dockerhub_account_username/your_dockerhub_repository_name
。如果您在使用Azure容器注册表时遇到此问题,可以先登录到您的注册表来解决它。
docker login yourregistry.azurecr.io
然后将你的镜像标记与你的注册表主机名匹配。
docker image tag yourimagename:[version] yourregistry.azurecr.io/yourimagename:[version]
最后,将其推送。
docker push yourregistry.azurecr.io/yourimagename:[version]
对于那些试图将镜像推送到自己的Nexus仓库管理器的人,请按照以下步骤进行操作:
1)登录您的Nexus仓库管理器(端口8443与特定的Docker主机仓库相关联)。
sudo docker login xxx.mydomain.com:8443
2) 使用你的Nexus服务器IP/DNS标记这个映像
sudo docker tag myimage:latest xxx.mydomain.com:8443/myimage:1.0.0
3) 推送镜像
sudo docker push xxx.mydomain.com:8443/myimage:1.0.0
sudo
- Sisir