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

denied: requested access to the resource is denied

注:我已成功登录docker


当前回答

我带着同样的信息来到这里,但来自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上绞尽脑汁。

其他回答

我今天也遇到了同样的问题。唯一对我有用的是显式登录到“docker.io”:

docker login docker.io

我尝试了各种其他名称,登录似乎可以工作,但稍后会导致以下错误。

请求的资源访问被拒绝

最后对我有用的唯一一件事是在dockerhub中创建一个公共存储库,并用相同的名称标记本地映像,并在合作者{in dockerhub}中添加我的userID,最后推送它。

我在上码头工人初级课程时也遇到了同样的问题。我通过在docker push调用之前进行adocker登录来解决这个问题。

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

# Login to docker hub account 
docker login 

# tag image 
docker tag nginx xyz/nginx

# push image
docker push xyz/nginx

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