我正在按照这个链接创建我的第一个docker映像,它成功了,现在我试图从这个链接将这个映像推到我的docker存储库中。但是每当我试图将这个映像推入存储库时,我就会得到这种类型的错误。

denied: requested access to the resource is denied

注:我已成功登录docker


当前回答

在我的例子中,我被推送到一个组织,我所在的团队对存储库有管理权限。

所以我的推送命令是: Docker push org-name/image-name

我可以成功地推到用户名/image-name,但不能推到组织。我再三检查了权限。毫无效果。

解决方案是从docker hub中删除repo,并再次使用: Docker push org-name/image-name

至于它的价值,我认为回购最初是在帐户转换为组织之前推动的。

其他回答

如果在docker登录后仍然失败,请确保您试图推送到的存储库在一开始就已创建。

当我在标记图像时使用docker中心名时,它为我工作。(这里,xyz是一个docker中心名)

# Login to docker hub account 
docker login 

# tag image 
docker tag nginx xyz/nginx

# push image
docker push xyz/nginx

我也有这个问题。事实证明,我使用的是免费层,并试图在私有存储库中推送多个图像。将一张图片设为私有,其余的设为公共,这对我来说很管用。

您可能需要在docker push之前将docker repo切换为private。

感谢Dean Wu提供的答案和ses的评论,在推送之前,请记得注销,然后从命令行登录到您的docker hub帐户

# you may need log out first `docker logout` ref. https://stackoverflow.com/a/53835882/248616
docker login

根据文件:

You need to include the namespace for Docker Hub to associate it with your account.
The namespace is the same as your Docker Hub account name.
You need to rename the image to YOUR_DOCKERHUB_NAME/docker-whale.

所以,这意味着你必须在推送之前标记你的图像:

docker tag firstimage YOUR_DOCKERHUB_NAME/firstimage

然后你就可以推它了。

docker push YOUR_DOCKERHUB_NAME/firstimage

我在Azure管道中遇到了类似的问题。我错过了在repository部分添加docker-id。

在Azure中,在推送时,如果仅使用名称,例如<repo-name>,可能无法工作。它需要完全限定的回购名称,其中还包括docker-id。

Use

repository: '<docker-id>/<repo-name>'

而不是

repository: '<repo-name>'

管道代码片段:

- task: Docker@2
  inputs:
    containerRegistry: 'service-connection-name'
    repository: '<docker-id>/<repo-name>'