我正在按照这个链接创建我的第一个docker映像,它成功了,现在我试图从这个链接将这个映像推到我的docker存储库中。但是每当我试图将这个映像推入存储库时,我就会得到这种类型的错误。
denied: requested access to the resource is denied
注:我已成功登录docker
我正在按照这个链接创建我的第一个docker映像,它成功了,现在我试图从这个链接将这个映像推到我的docker存储库中。但是每当我试图将这个映像推入存储库时,我就会得到这种类型的错误。
denied: requested access to the resource is denied
注:我已成功登录docker
当前回答
我得到了同样的错误。不幸的是,这个错误是由于在docker push之前使用sudo造成的。此外,您可能需要从dockerhub中删除存储库,因为您可以拥有的repo数量是有限的。并且,请尝试docker注销,然后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
这个答案既适用于我未来的自己,也适用于其他人。当我正确登录时,我遇到了这个确切的问题,但是当我的私人回购数量大于或等于我的计划允许的限制时,我正试图推到一个私人回购。
我不太确定我是如何能够创建太多的私人回购,但如果我的计划包括5个私人回购,以某种方式我有6个,那么这是我将收到的错误:
Denied:拒绝访问资源的请求
在我的情况下,可能我最终有太多的私有存储库,因为我把我的默认可见性设置为私有:
这是你决定你可以拥有多少私人回购的地方:
一旦我公开了这个有问题的回购,问题就变得显而易见了:
不允许误导标签名称。 我的解决方法是:
Command 1(Create Tag): docker tag my-nginx:latest rsachde/nginx-repository/trys:1.0 (Didn't push)
Command 2(Push): docker push rsachde/nginx-repository/try:1.0
输出:
Denied:拒绝访问资源的请求
Command 1.1(Create Tag): docker tag my-nginx:latest rsachde/nginx-repository/:trys
Command 2.2(Push): docker push rsachde/nginx-repository:trys
输出:
trys: digest: sha256:405b6f0ae25772ef71b8f59fd6a56ff9b426f50bd24bac2b5db41f65efd3387c 尺寸:1365
误导是标签,确保你们理解。
我的答案与Azure DevOps相关,类似于我在以下通用管道中遇到的问题(它更具体,但它可能有助于节省时间):
从github获取资源 构建docker映像 推送docker镜像到dockerhub
我在推送拒绝时收到的错误:对资源的请求访问被拒绝发送到这里。
请注意映像名称中包含的变量$(Build.Repository.Name)。它默认是来自github的存储库名称,但为了让您的推送工作,它应该是dockerhub_account_username/your_dockerhub_repository_name。
将$(build . repository . name)替换为dockerhub_account_username/your_dockerhub_repository_name在映像名称字段中用于构建和推送步骤。
dockerhub api需要这一点来知道在哪里推送图像。
我很慢地添加另一个答案,但接受的答案和其余的答案提到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注册表的主机和端口登录的可能性就会增加。