拒绝访问:请求访问资源被拒绝:docker。

805

我正在遵循此链接创建我的第一个Docker镜像,它成功了,现在我正在尝试从此链接将此镜像推送到我的Docker仓库。但是每当我尝试将此镜像推送到仓库时,就会出现这种类型的错误。

denied: requested access to the resource is denied

注意:我已成功登录 Docker。


1
确保您不会犯这个错误:https://dev59.com/niX-s4cB2Jgan1znszAf#59626146 - Jithin Pavithran
4
请务必确认您的电子邮件。如果您在想谁会做这样愚蠢的事情,那么我在推送之前没有确认我的电子邮件。 - Luv33preet
6
这个对我有用。 https://dev59.com/mFoV5IYBdhLWcg3wIbxT#42300879 - abitcode
检查是否需要使用 sudo - Sisir
69个回答

1

1
这篇答案不仅是为了我未来的自己,也是为了其他人。当我正确登录后,尝试推送到私有 repo 时,如果我的私有 repo 数量大于或等于计划允许的限制,则会遇到此问题。
我不确定如何创建太多私有 repo,但如果我的计划包括 5 个私有 repo,并且某种方式我有 6 个,则会收到以下错误:
拒绝访问:请求的资源访问被拒绝
在我的情况下,可能是因为我将默认可见性设置为私有而导致私有存储库过多。

Default Visibility

这是您确定可以拥有多少个私有仓库的地方:

Billing Plans

一旦我将有问题的仓库公开,问题就变得显而易见:

Make Repository Private 5 of 5


1
如果在docker login之后仍然失败,请确保您尝试推送的存储库首先已创建。

1

TL;DR 在 macOS 上,docker login 对我不起作用,但是从应用程序中的 docker login 能够正常工作

当直接从终端使用命令 docker login 时,它成功地要求我的凭据,并且在我正确输入它们后(请记住没有电子邮件,只有 docker ID 可以工作)它宣布 登录成功,但任何推送请求都会以 denied: requested access to the resource is denied 结束。

然而,当我从运行的 macOs docker 应用程序中登录时(从工具栏中的图标),它可以工作。因此,docker login 和正在运行的 docker 应用程序/守护程序之间可能存在一些不一致。


1
唯一最终对我起作用的方法是在Docker Hub中创建一个公共存储库,并使用相同的名称标记本地镜像,将我的用户ID添加到协作者(在Docker Hub中),最后推送它。

1

在Azure Devops中创建CI流水线以构建和推送docker镜像到Docker Hub时,我遇到了相同的问题。我的错误在于在容器存储库部分提供了错误的输入。

在buildAndPush任务中,我在容器存储库字段中提供了仓库名称。实际上,仓库名称应该附加Docker Hub用户名/。 例如,您的用户名是myuser,仓库名称为test,则应将条目提供为myuser/test。当我纠正了这个问题后,流水线成功工作,并且镜像被推送到我的docker hub存储库。


1
这可能与DigitalOcean容器注册表有关,但也许会有所帮助:
在我的情况下,我的流水线触发了一个清理作业 (doctl registry garbage-collection start) 在 docker push之后,这会将注册表设置为只读模式(请参见doc)。因此,在清理作业处于活动状态时进行的下一次推送将得到denied: requested access to the resource is denied
如果doctl registry garbage-collection get-active返回404,则作业已完成,并且docker push将成功完成。

1
这对我来说最终也是同样的问题。我没有意识到垃圾回收会触发只读模式,所以一直在思考错误信息。谢谢! - ChrisC

1

推送所有标签

使用-a进行推送,例如docker push username/image -a

如果出现访问被拒绝的情况,可能是由于Docker仓库权限不公开(您可以再次检查)

需要拉取以检查是否正常。

在hub.docker.com中查看

成功推送后,打开“标签”以查看所有可用标签


1

如果对任何人有帮助的话...
我遇到了同样的问题,这是我的问题以及解决方法。

  • 我在我的测试网络上有一台名为'galaxy'的计算机。
  • 我使用以下运行命令设置了Docker注册表:
  • sudo docker run -d 
    --restart=always \
    --name registry \
    -v /srv/registry/certs:/certs \
    -v /srv/registry/storage:/var/lib/registry \
    -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
    -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/galaxy.cert \
    -e REGISTRY_HTTP_TLS_KEY=/certs/galaxy.key \
    -p 443:443 \
    registry:2
    

    接下来,我尝试从网络上的笔记本电脑向Galaxy推送图像,所以我做了以下操作:

    docker login galaxy
    

    这会给我一个错误,上面会说:
    Login did not succeed, error: Error response from daemon: 
        Get https://galaxy/v2/: x509: certificate signed by unknown authority
    

    奇怪的是,解决这个问题的方法是像这样进行登录:

    docker login galaxy:443
    

    那导致了成功登录。

    然后我尝试从我的笔记本电脑将图像推送到“galaxy”。
    我已经为我的图像创建了一个标签,看起来是这样的:
    galaxy/myImage:0.0.1
    

    所以我尝试通过这样做来推动它:

    docker push galaxy/myImage:0.0.1
    

    我得到的回复是:
    The push refers to repository [docker.io/galaxy/myImage]
    7ab460574f86: Preparing 
    1aecaf56754d: Preparing 
    1df1b5f06ca4: Preparing 
    denied: requested access to the resource is denied
    

    奇怪的是我发现解决这个问题的方法是首先对图片进行以下标记:

    docker tag myImage:0.0.1 galaxy:443/myImage:0.0.1
    

    ...然后像这样进行推送:

    docker push galaxy:443/myImage:0.0.1
    

    因为某些原因,我不得不在标签中包含端口号,作为仓库名称的必要部分。



    希望这能帮助其他人。

    1

    如果您已经登录但仍然遇到错误,请按照以下步骤操作:

    PS C:\Users\rohit\Docker> docker logout
    Removing login credentials for https://index.docker.io/v1/
    
    PS C:\Users\rohit\Docker> docker login
    Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
    Username: rohithpoya
    Password:*****************
    Login Succeeded
    
    Logging in with your password grants your terminal complete access to your account.
    For better security, log in with a limited-privilege personal access token. Learn more at https://docs.docker.com/go/access-tokens/
    
    PS C:\Users\rohit\Docker> docker push rohithpoya/mongo-enterprise:5                                                                                                                                                                       
    The push refers to repository [docker.io/rohithpoya/mongo-enterprise]                                                                                                                                                                        83ee27b8fe98: Pushed
    

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接