我正在按照这个链接创建我的第一个docker映像,它成功了,现在我试图从这个链接将这个映像推到我的docker存储库中。但是每当我试图将这个映像推入存储库时,我就会得到这种类型的错误。
denied: requested access to the resource is denied
注:我已成功登录docker
我正在按照这个链接创建我的第一个docker映像,它成功了,现在我试图从这个链接将这个映像推到我的docker存储库中。但是每当我试图将这个映像推入存储库时,我就会得到这种类型的错误。
denied: requested access to the resource is denied
注:我已成功登录docker
当前回答
在使用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处理用户id和存储库的方式可能有点令人困惑。 假设您在docker hub上创建了一个用户帐户xyz。新帐户自动建立名称空间xyz。 然后创建一个名为myrepo的存储库。存储库名称实际上是xyz/myrepo。
要推送一个图像,你应该做:
docker push docker.io/xyz/myrepo
如果需要,可以添加“:latest”或其他标签。
如果你得到的资源访问请求被拒绝错误消息:
访问https://hub.docker.com/并以xyz登录。 单击存储库xyz/myrepo。 点击合作者。 添加xyz作为合作者。
在使用Gitlab注册表时,我还遇到了这个错误消息。不同之处在于,我试图从以前的构建中更改映像的名称。这里的问题是,推送图像的注册表不存在,因为图像的新名称与我组中的任何项目都不匹配。
TLDR:在Gitlab中,映像名称必须与项目名称匹配。
我在Windows 10上使用了这个方法
码头工人登录
这可能是特定于DigitalOceans容器注册表,但它可能有帮助:
在我的例子中,我的管道在docker推送之后触发了一个清理作业(doctl注册表垃圾收集启动),这将注册表置于只读模式(参见doc)。因此,在清理作业处于活动状态时的下一个推送将被拒绝:对资源的请求访问将被拒绝。
如果doctl注册表垃圾收集get-active返回404,则作业完成,docker推送将成功完成。
我也有同样的问题。我强烈推荐大家浏览一下这个博客。
我的问题更多地与ACR有关。Docker客户端将引用配置。您的SP证书文件将存储在json文件中(角色所有者)。
博客中帮助我解决问题的部分有:
Docker镜像ls Docker标签.azurecr.io/:v1 Docker推送.azurecr.io/:v1
在此操作之前,我还创建了一个具有所有者特权的SP。