我正在按照这个链接创建我的第一个docker映像,它成功了,现在我试图从这个链接将这个映像推到我的docker存储库中。但是每当我试图将这个映像推入存储库时,我就会得到这种类型的错误。
denied: requested access to the resource is denied
注:我已成功登录docker
我正在按照这个链接创建我的第一个docker映像,它成功了,现在我试图从这个链接将这个映像推到我的docker存储库中。但是每当我试图将这个映像推入存储库时,我就会得到这种类型的错误。
denied: requested access to the resource is denied
注:我已成功登录docker
当前回答
在使用Gitlab注册表时,我还遇到了这个错误消息。不同之处在于,我试图从以前的构建中更改映像的名称。这里的问题是,推送图像的注册表不存在,因为图像的新名称与我组中的任何项目都不匹配。
TLDR:在Gitlab中,映像名称必须与项目名称匹配。
其他回答
我今天也遇到了同样的问题。唯一对我有用的是显式登录到“docker.io”:
docker login docker.io
我尝试了各种其他名称,登录似乎可以工作,但稍后会导致以下错误。
请求的资源访问被拒绝
我带着同样的信息来到这里,但来自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上绞尽脑汁。
我的问题是在我的图像名称中使用无效字符(额外的/):
myusername/something/image
无效的映像名称。/上的用户名都尝试dangillmor something-image。希望这能帮助到一些人。
我很慢地添加另一个答案,但接受的答案和其余的答案提到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。IO导致错误:
denied: requested access to the resource is denied
我还注意到做一个
docker image ls
显示我的图像的最新构建是几天前的。
我必须做一个
docker container prune
来摆脱停止的容器,和一个
docker image prune -a
为了摆脱旧的形象。 然后我就可以成功地建立和推广我的形象。
'denied:对资源的请求访问被拒绝'不是来自docker。我是本地码头工人。有趣的是,它在构建过程中并没有失败。