我正在按照这个链接创建我的第一个docker映像,它成功了,现在我试图从这个链接将这个映像推到我的docker存储库中。但是每当我试图将这个映像推入存储库时,我就会得到这种类型的错误。
denied: requested access to the resource is denied
注:我已成功登录docker
我正在按照这个链接创建我的第一个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
至于它的价值,我认为回购最初是在帐户转换为组织之前推动的。
其他回答
我带着同样的信息来到这里,但来自Azure DevOps。
在我的例子中,我使用docker-compose,而不仅仅是docker,并在yaml中编写构建管道。
- task: DockerCompose@0
displayName: 'Push services'
inputs:
azureSubscription: '$(Parameters.azureSubscriptionEndpoint)'
azureContainerRegistry: '$(Parameters.azureContainerRegistry)'
dockerComposeFile: '$(Parameters.dockerComposeFile)'
additionalDockerComposeFiles: |
docker-compose.release.yml
docker-compose.ci.yml
dockerComposeFileArgs: 'PublishFolder=publish'
action: 'Push services'
additionalImageTags: '$(Build.BuildId)'
includeLatestTag: true
我得到的消息是明确地说,它正在尝试推送到docker。io,这不是我想要的。我本来打算把它送到我的Azure容器注册中心。
这里缺少的是输入下的这一行:
containerregistrytype: Azure Container Registry
上面构建yaml的现有管道向导根本没有这一行。 希望这能帮助其他人在Azure DevOps上绞尽脑汁。
在使用Fabric8 Maven插件(在Windows 10上)和直接从命令行调用docker push时,我一直在与docker push作斗争。
最后我用同样的方法解决了这两个问题。
我的回购叫做vgrazi/playpen。在我的pom中,我将docker镜像名称更改为vgrazi/playpen,如下所示:
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.31.0</version>
<configuration>
<dockerHost>npipe:////./pipe/docker_engine</dockerHost>
<verbose>true</verbose>
<images>
<image>
<name>vgrazi/playpen</name>
<build>
<dockerFileDir>${project.basedir}/src/main/docker/</dockerFileDir>
...
这让我做一个mvn清洁包docker:build docker:push从命令行,最后,图像出现在我的repo,这是我试图解决的问题。
顺便说一句,为了回答OP并让它直接从命令行工作,没有Maven,我做了以下操作(PS是PowerShell提示符,不要键入它):
PS docker images
vgrazi/docker-test/docker-play playpen 0722e876ebd7 40 minutes ago 536MB
rabbitmq 3-management 68055d63a993 10 days ago 180MB
PS docker tag 0722e876ebd7 vgrazi:playpen
PS docker push vgrazi/playpen
图像再次出现在我的docker中。Io: repo vgrazi/playpen
我很慢地添加另一个答案,但接受的答案和其余的答案提到docker登录缺少一个边缘情况,以解决其他人在评论中陈述的问题。
docker login <private-repo-host>:<port>
强调需要进入的端口可能是那些仍在寻找的解决方案。docker login或docker login <private-repo-host>可能连接没有问题,但当需要推送图像时,你会得到与OP相同的错误。
也就是说,你可以连接w/o定义主机或端口,仍然得到:
... 登录成功
在我的例子中,我使用一个自托管的GitLab内置docker-registry,它被设置为使用端口4567。验证必须从哪个端口访问注册表可能有点冒险。没有指定端口docker login <our.gitlab。主机>将成功登录,但给出了OP询问的相同问题:
... 推送指的是存储库[…] Denied:禁止访问
如果你使用docker。Io /dockerhub你可能不会遇到这个问题,但是如果你有一个自托管/私有注册表解决方案,那么你需要显式地使用docker注册表的主机和端口登录的可能性就会增加。
如果在docker登录后仍然失败,请确保您试图推送到的存储库在一开始就已创建。
推送所有标签
使用-a来推。S.t. docker push username/image -a
拒绝访问可能是由于docker存储库权限不是公共的(你可以再次检查)
你需要拉一下看看是否可以。
在hub.docker.com中查看
打开“标签”查看成功推送后所有可用的标签