docker推送错误"denied: requested access to the resource is denied"
docker push error "denied: requested access to the resource is denied"
尝试将图像推送到 Docker Hub 上的 public 存储库时会发生此错误。我尝试过的其他注册表没有问题。
我看了很多网站、博客,包括 Whosebug,仍然没有明确的答案。
您可以尝试重现此问题,如下所示。
如上面的屏幕截图所示,我在本地 docker 主机上有一个图像 aspc-mvc-app
。如图所示,它有 3 个标签 - 1.0.5
、1.0.5.latest
和 latest
.
假设我们尝试在 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
-->提示returns没有错误。到目前为止一切顺利。
(3) 推送
docker push janedoe/aspc-mvc-app
--> 这是错误发生的地方。
如下面的屏幕截图所示,在您收到错误 denied: requested access to the resource is denied
之前,初始检查似乎正常进行
在步骤 (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 容器注册表。
既然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!
我也遇到了同样的问题,但在尝试了一些组合之后,这个方法奏效了。
每当您按下 - 指的是 docker.io/ 后跟注册表路径。
在我的例子中,我的用户名是 rushmith,我在 rushmith 下创建了一个名为 docker 的示例存储库。
我的link是:"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
您可以按照以下步骤操作:
第 1 步: docker login -u <username> -p <password>
将出现带有 "Login Succeeded" 的消息,确认您已成功登录。
第 2 步:
现在为了推送图像,只需确保您使用的路径必须在标签中包含您的用户名。
例如:假设 link 是:"hub.docker.com/u/xyz/"
为图像创建标签 docker push xyz/docker:latest.
如果您已经有一些不同的标签,请使用命令更改它
docker tag <old tag> <new tag>
希望对您有所帮助。
首先在终端输入sudo docker login
登录。输入用户名和密码
访问您的 docker 帐户并创建一个新存储库。在我的例子中,我创建了一个存储库 crabigator1900/dockerhub
假设您有一个 docker 图像,其存储库名称为:crabigator/django,标签为:latest.
在这种情况下,您需要使用您想要的标签来标记此图像。我决定用标签来标记它:myfirstimagepush。您通过键入命令标记图像
sudo docker tag crabigator/django:latest crabigator1900/dockerhub:firstimagepush
- 最后使用命令
将图像推送到您的存储库
sudo docker push crabigator1900/dockerhub:firstimagepush
仅此而已。
从网站创建存储库。
可能是您没有创建仓库的权限。
我遇到了同样的问题,运行 带 sudo 的 push 命令解决了这个问题。我认为这只是一个权限问题。
sudo docker push janedoe/aspc-mvc-app
在用上述不同方法苦苦挣扎了 1 小时后,
我在我的mbp中重新安装了neweast版本的Docker桌面应用程序,然后就解决了。
neweast版本是20.10.2
旧版本是 17.x,是 5 年前安装的。
docker 推送不会创建回购名称,因此如果不存在则表示访问不可用
首先您需要确保您已登录您的帐户
您需要创建一个仓库,下面是创建仓库的命令-
docker tag local-image:tagname 你的账户名/tagname
docker push 你的账户名/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.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 存储库。
就我而言,即使在成功登录 Docker 注册表后我仍面临这个问题。
所以,我尝试 运行将 docker 推送为 sudo 并且成功了。
请务必按照以下步骤操作:
- 运行
docker login
- 登录成功后,运行docker推送命令
- 如果推送失败,运行这个:
sudo docker push repoName:tagName
如果您使用 2FA 并且 运行
docker login -u <your_docker_user_name>
你会得到 Login successful
但你将无法推送。
这是因为您使用的是 2FA,它需要 one-time 密码才能登录您的帐户。
为了能够在启用 2FA 的情况下进行推送,您需要使用访问令牌。要生成一个,请转到 Docker Hub website 上的 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。
尝试将图像推送到 Docker Hub 上的 public 存储库时会发生此错误。我尝试过的其他注册表没有问题。
我看了很多网站、博客,包括 Whosebug,仍然没有明确的答案。
您可以尝试重现此问题,如下所示。
如上面的屏幕截图所示,我在本地 docker 主机上有一个图像 aspc-mvc-app
。如图所示,它有 3 个标签 - 1.0.5
、1.0.5.latest
和 latest
.
假设我们尝试在 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
-->提示returns没有错误。到目前为止一切顺利。
(3) 推送
docker push janedoe/aspc-mvc-app
--> 这是错误发生的地方。
如下面的屏幕截图所示,在您收到错误 denied: requested access to the resource is denied
之前,初始检查似乎正常进行在步骤 (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 容器注册表。
既然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!
我也遇到了同样的问题,但在尝试了一些组合之后,这个方法奏效了。
每当您按下 - 指的是 docker.io/ 后跟注册表路径。
在我的例子中,我的用户名是 rushmith,我在 rushmith 下创建了一个名为 docker 的示例存储库。
我的link是:"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
您可以按照以下步骤操作:
第 1 步: docker login -u <username> -p <password>
将出现带有 "Login Succeeded" 的消息,确认您已成功登录。
第 2 步: 现在为了推送图像,只需确保您使用的路径必须在标签中包含您的用户名。
例如:假设 link 是:"hub.docker.com/u/xyz/" 为图像创建标签 docker push xyz/docker:latest.
如果您已经有一些不同的标签,请使用命令更改它
docker tag <old tag> <new tag>
希望对您有所帮助。
首先在终端输入
sudo docker login
登录。输入用户名和密码访问您的 docker 帐户并创建一个新存储库。在我的例子中,我创建了一个存储库 crabigator1900/dockerhub
假设您有一个 docker 图像,其存储库名称为:crabigator/django,标签为:latest.
在这种情况下,您需要使用您想要的标签来标记此图像。我决定用标签来标记它:myfirstimagepush。您通过键入命令标记图像
sudo docker tag crabigator/django:latest crabigator1900/dockerhub:firstimagepush
- 最后使用命令 将图像推送到您的存储库
sudo docker push crabigator1900/dockerhub:firstimagepush
仅此而已。
从网站创建存储库。
可能是您没有创建仓库的权限。
我遇到了同样的问题,运行 带 sudo 的 push 命令解决了这个问题。我认为这只是一个权限问题。
sudo docker push janedoe/aspc-mvc-app
在用上述不同方法苦苦挣扎了 1 小时后, 我在我的mbp中重新安装了neweast版本的Docker桌面应用程序,然后就解决了。
neweast版本是20.10.2 旧版本是 17.x,是 5 年前安装的。
docker 推送不会创建回购名称,因此如果不存在则表示访问不可用
首先您需要确保您已登录您的帐户
您需要创建一个仓库,下面是创建仓库的命令-
docker tag local-image:tagname 你的账户名/tagname
docker push 你的账户名/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.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 存储库。
就我而言,即使在成功登录 Docker 注册表后我仍面临这个问题。
所以,我尝试 运行将 docker 推送为 sudo 并且成功了。
请务必按照以下步骤操作:
- 运行
docker login
- 登录成功后,运行docker推送命令
- 如果推送失败,运行这个:
sudo docker push repoName:tagName
如果您使用 2FA 并且 运行
docker login -u <your_docker_user_name>
你会得到 Login successful
但你将无法推送。
这是因为您使用的是 2FA,它需要 one-time 密码才能登录您的帐户。
为了能够在启用 2FA 的情况下进行推送,您需要使用访问令牌。要生成一个,请转到 Docker Hub website 上的 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。