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

denied: requested access to the resource is denied

注:我已成功登录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 push user/repo/tag

而不是

docker push user/repo:tag

因为我也这样做了我的标签:

docker tag image user/repo/tag

...一切都毁了。

我真诚地希望你不要重蹈我的覆辙。我在这上面浪费了30分钟…

之前的答案都是正确的,我只是想补充一个我看到没有提到的信息;

如果项目是私有项目,要正确地推送映像,必须配置个人访问令牌或启用read_registry key的部署令牌。

来源:https://gitlab.com/help/user/project/container_registry using-with-private-projects

希望这是有帮助的(如果问题是张贴到目前为止的时间)

我也有同样的问题。在我的情况下,我登录在index.docker.io,并将图像推到docker.io/username/image:标签。

解决方案是在docker中登录。IO通过运行这个命令:

export CI_REGISTRY=docker.io
docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
docker push USERNAME/IMAGE:TAG

输出为:

The push refers to repository [docker.io/USERNAME/IMAGE:TAG] eeb7e16c6369: Preparing 6bd09f46d0ae: Preparing f5a7f7a3fb28: Preparing 07952c1df7f6: Preparing a4522c0d203b: Preparing 3e207b409db3: Preparing 3e207b409db3: Waiting a4522c0d203b: Layer already exists 3e207b409db3: Layer already exists f5a7f7a3fb28: Pushed 6bd09f46d0ae: Pushed 07952c1df7f6: Pushed eeb7e16c6369: Pushed latest: digest: sha256:7ce256fa83ef1eebcaaaa460c4d73f87f2adf304bc6e6c1b83a19d987cd61ad5 size: 1579 Running after_script 00:02 Saving cache 00:01 Uploading artifacts for successful job 00:02 Job succeeded

的问候。

在使用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。IO导致错误:

denied: requested access to the resource is denied

我还注意到做一个

docker image ls

显示我的图像的最新构建是几天前的。

我必须做一个

docker container prune 

来摆脱停止的容器,和一个

docker image prune -a

为了摆脱旧的形象。 然后我就可以成功地建立和推广我的形象。

'denied:对资源的请求访问被拒绝'不是来自docker。我是本地码头工人。有趣的是,它在构建过程中并没有失败。