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

denied: requested access to the resource is denied

注:我已成功登录docker


当前回答

尝试签出“Docker for Windows”应用程序和签出https://hub.docker.com/网站后执行“Docker登录”和“Docker推送”。 这对我很有帮助。

其他回答

还需要注意的重要一点是,在标记图像时,首先使用命名空间标记,然后使用存储库/ mydevrepo标记。这让我在使用Docker文档时感到困惑。之后我使用:

docker login

然后我使用“tagged name”来推送我的图像。

docker push {namespace}/mydevrepo

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

我在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>'

以防其他人遇到这种情况-在我的情况下,原因是我正在使用(已弃用的)docker合成方法来推送图像。切换到预期的docker推送为我解决了这个问题。

我很慢地添加另一个答案,但接受的答案和其余的答案提到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注册表的主机和端口登录的可能性就会增加。