繁体   English   中英

docker 推送错误“被拒绝:请求访问资源被拒绝”

[英]docker push error "denied: requested access to the resource is denied"

尝试将图像推送到Docker Hub上的公共存储库时会发生此错误。 我尝试过的其他注册表没有问题。

我看了很多网站、博客,包括 StackOverflow,但仍然没有明确的答案。

您可以尝试按如下方式重现此问题。

本地主机上的图像

如上图所示,我在本地 docker 主机上有一个图像aspc-mvc-app 如图所示,它有 3 个标签 - 1.0.51.0.5.latestlatest

假设我们尝试在 Docker Hub 使用账户名janedoe进行推送

根据Docker.io和许多其他站点上的文档,推送有 3 个步骤。

(1) 登入

docker login "index.docker.io" -u janedoe -p <password>

--> 我得到Login Succeeded ,这很好!

(2) 添加一个或多个标签

在 3 个标签中,我们只标记latest的 .

docker tag janedoe/aspc-mvc-app:latest janedoe/aspc-mvc-app

--> 提示没有错误返回。 到目前为止,一切都很好。

(3) 推

docker push janedoe/aspc-mvc-app

--> 这是错误发生的地方。

如下面的屏幕截图所示,初始检查似乎正常进行,直到出现错误被拒绝:请求访问资源被拒绝

在此处输入图像描述

在步骤 (2) 中,我尝试了许多其他格式,包括以下格式。

docker tag janedoe/aspc-mvc-app:latest janedoe/aspc-mvc-app:latest
docker tag janedoe/aspc-mvc-app janedoe/aspc-mvc-app:latest

docker tag aspc-mvc-app:latest janedoe/aspc-mvc-app
docker tag aspc-mvc-app janedoe/aspc-mvc-app:latest

docker tag 306a8fd79d88 janedoe/aspc-mvc-app
docker tag 306a8fd79d88 janedoe/aspc-mvc-app:latest

全部失败并出现相同的错误。

作为比较,使用完全相同的图像,我可以毫无问题地推送到 Azure Container Registry。

由于 Docker Hub 如此受欢迎,任何人都可以阐明其中的奥秘,或者是否有任何地方有详细的文档?

2017 年 5 月 9 日更新

我非常了解 docker cli 和服务器版本。 现在,我的 cli 是17.05.0-ce-rc1 ,服务器是17.04.0-ce ,如下所示。

在此处输入图像描述

解决方法很简单,就是在步骤(1)改变登录方式。

docker login -u janedoe -p <password>

其他一切都可以保持上述方式。 镜像成功推送到Docker Hub!

1)首先通过在终端中输入sudo docker login 输入用户名和密码

2) 访问您的 docker 帐户并创建一个新的存储库。 就我而言,我创建了一个存储库zawad1879/dockerhub

3)假设您有一个docker镜像,其存储库名称为: zawad/django和标签: latest

在这种情况下,您需要使用您希望的标签来标记此图像。 我决定用标签来标记它: myfirstimagepush 您可以通过键入命令来标记图像

sudo docker tag zawad/django:latest zawad1879/dockerhub:firstimagepush

4)最后使用命令将图像推送到您的存储库

sudo docker push zawad1879/dockerhub:firstimagepush

这里的所有都是它的。

我也有同样的问题,但在尝试了一些组合后,这奏效了。

每当您推送时 - 指的是docker.io/后跟注册表路径。

在我的情况,我的用户名是rushmith,我创建了一个叫做下rushmith码头工人的样本库。

我的链接是: “hub.docker.com/r/rushmith/docker/”

现在我为我想要推送的图像创建了一个标签: rushmith/docker

它成功了。

$ docker login -u rushmith

(输入密码,然后输入如下)

$ docker push rushmith/docker:latest

输出:

The push refers to a repository [docker.io/rushmith/docker]
7fbb0e1e64cb: Pushed
33f1a94ed7fc: Pushed 
b27287a6dbce: Pushed 
47c2386f248c: Pushed 
2be95f0d8a0c: Pushed 
2df9b8def18a: Pushed 
latest: digest: 
sha256:4d749d86b4a2d9304a50df474f6236140dc2d169b9aabc354cdbc6ac107390f2 size: 1569

我希望这个迟到的解决方案可以帮助某人。 此错误消息的原因是您没有正确命名您的图像 假设您在 docker.io 上的帐户名称是your-name那么您的新仓库名称将是your-name/your-new-image-name

为了推送您的图像,首先您必须将您的本地图像标记(命名)为:

docker tag local-image[:tag-name] your-name/your-new-image-name[:tag-name]

括号中的内容是可选的。 您可能想使用docker image ls检查结果。 然后将您的图像推送到您的 docker 存储库:

docker push your-name/your-new-image-name[:tag-name]

完毕! 您的图像已推送到 docker 存储库。

经过1小时的上述不同方式的挣扎,我在我的mbp中重新安装了最新版本的Docker Desktop应用程序,然后它就解决了。

neweast版本是20.10.2,老版本是17.x,5年前安装的。

您可以按照以下步骤操作:

第一步: docker login -u <username> -p <password>

将出现“登录成功”消息,确认您登录成功。

第 2 步:现在为了推送图像,只需确保您使用的路径必须在标签中包含您的用户名。

例如:假设链接是: “hub.docker.com/u/xyz/”创建一个标签以将其镜像为docker push xyz/docker:latest

如果您已经有一些不同的标签,请使用命令更改它

docker tag <old tag> <new tag>

希望这可以帮助。

从网站创建存储库。

您可能没有创建存储库的权限。

docker push 不会创建存储库名称,因此如果不存在,则表示访问不可用

首先,您需要确保您已登录您的帐户

在此处输入图片说明

您需要创建一个存储库,以下是创建存储库的命令 -

docker tag local-image:tagname你的账户名/tagname

码头工人推你的账户名/标记名在此处输入图片说明

这对我有用。

> docker login -u janedoe
Password:
Login Succeeded 

> docker tag myapp:0.0.1 janedoe/myflinkapp:0.0.1

> docker push janedoe/myapp:0.0.1
The push refers to repository [docker.io/janedoe/myapp]
b763be657a2c: Pushed
e534dae385a8: Pushed
5af3d5d57035: Pushed
0e44828b51e2: Pushed
fdd771f27095: Pushed
ef9a7b8862f4: Pushed
a1f2f42922b1: Pushed
4762552ad7d8: Pushed
0.0.1: digest: sha256:0069ee2c39b422e64f0493d2b2e9cbe7736a size: 2154

就我而言,即使在成功登录 Docker 注册表后,我也遇到了这个问题。

因此,我尝试以 sudo 身份运行 docker 推送,它成功了。

确保您遵循以下步骤:

  1. 运行docker login
  2. 登录成功后,运行docker push命令
  3. 如果推送失败,请运行: sudo docker push repoName:tagName

如果您使用 2FA 并运行

docker login -u <your_docker_user_name>

您将Login successful ,但无法推送。

这是因为您使用的是 2FA,它需要一次性密码才能登录您的帐户。

为了能够在启用 2FA 的情况下进行推送,您需要使用访问令牌。 要在Docker Hub 网站上生成一个 go 到Account settings/Security ,然后单击New Access Token 对于Access Permissions ,最好选择Read & Write - 这是能够推送的入门级别。 仅在您确实需要时才生成Read, Write, Delete令牌!

系统将提示您下一步的操作说明。 只是为了保持完整的答案,你必须运行

docker login -u <you_docker_username>

并在提示输入Password时粘贴您的Personal Access Token

重要提示:将您的Personal Access Token保存在密码管理器中,切勿与任何人共享,切勿推送到 github 或添加到您的源代码中。 绝不。 请。

现在,当您运行docker push <your_docker_username>/<your_docker_repo_name>:<tag_of_your_image>时,您应该能够将图像推送到 Docker Hub。

我有同样的问题,它通过使用 sudo 运行 push 命令解决了。 我认为这只是一个特权问题。

sudo docker push janedoe/aspc-mvc-app

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM