拒绝访问:请求访问资源被拒绝: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个回答

6

在提供用户名和密码后,我将"docker login https://hub.docker.com"更改为"docker login docker.io",这样就可以正常运行了。

然后按照以下命令操作:

docker tag local-image:tagname new-repo:tagname

docker push new-repo:tagname

注意: "new-repo" 将包含 "Docker ID + Repo 名称"

在执行以下命令之前,我已经在 Docker Hub 中创建了 "ubuntu" 仓库。

示例:

docker tag alok/ubuntu:latest aloktiwari2007/ubuntu:latest

docker push aloktiwari2007/ubuntu:latest

1
对我来说重要的一点是在docker tag命令中的tagname应该是以下格式 - <docker用户ID>/<远程仓库名称>:<标签>。在push命令中应使用相同的标签标识符。 - Tanmay Patil

5

简单的解决方案:

访问 https://hub.docker.com/ 创建一个私有仓库,例如 johnsmith/private-repository,这是在构建镜像时要使用的NAME/REPOSITORY

  • 首先,执行docker login

  • 其次,我使用"docker build -t johnsmith/private-repository:01 ."创建镜像,并使用"docker images"确认已创建的镜像,如下面黄色框中的文本字符串所示:

johnsmith/private-repository(REPOSITORY) 01(TAD) c5f4a2861d6e(IMAGE ID) 2 days ago(CREATED) 305MB(SIZE)

  • 第三步,执行docker push johnsmith/private-repository:01

完成!


为什么需要私人代码仓库? - Mint

4

使用应用程序登录。我尝试过从终端登录,但没有成功。

这是版本17.06.1

在此输入图片描述


在 MacOS 上,这对我来说是解决方案。 - Vagari

4

在使用Docker登录之后,您需要用前缀为您的镜像命名。

例如,如果您在Docker Hub上的用户名是Shah,则镜像应该是:

Shah/firstimage

而且,它是区分大小写的,所以请确保用户名的大小写正确。 - leanne

4
不得不用我的用户名标记它
docker login

docker tag imageName username/imageName

docker push username/imageName

只有这个对我有效!


3

有一个Docker文件,要求构建镜像并立即将其推送到Docker Hub

  1. 登录Docker Hub
    sudo docker login -u 您的用户名
    输入密码

  2. 构建镜像
    sudo docker build -t 您的用户名/demorepo:1.0
    以上, 没有提及镜像名称,因为您的用户名/demorepo是Docker Hub中的存储库。标记的名称是1.0

  3. 推送镜像
    sudo docker push 您的用户名/demorepo:1.0

将已存在的镜像推送到Docker Hub

  1. 登录Docker Hub
    sudo docker login -u 您的用户名
    输入密码

  2. 标记您的镜像(假设您的镜像名为test_docker:1.0)
    sudo docker tag test_docker:1.0 您的用户名/demorepo:firstpush
    以上,firstpush是赋予您的镜像test_docker 1.0标签的名称。
    重要提示:(在标记时,未提及镜像名称)
    现在在docker images中您将有两个镜像,一个是test_docker 1.0,另一个是您的用户名/demorepo firstpush

  3. 推送镜像
    sudo docker push 您的用户名/demorepo:firstpush


3

这在我的Windows 10上奏效了

登录Docker


3

我遇到了同样的问题。在我的情况下,我登录了index.docker.io并将镜像推送到docker.io/用户名/镜像名:标签。

解决方案是通过运行以下命令登录docker.io:

export CI_REGISTRY=docker.io
docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
docker push USERNAME/IMAGE:TAG

输出结果如下:

 The push refers to repository [docker.io/USERNAME/IMAGE:TAG]
 eeb7e16c6369: Preparing
 6bd09f46d0ae: Preparing
 f5a7f7a3fb28: Preparing
 07952c1df7f6: Preparing
 a4522c0d203b: Preparing
 3e207b409db3: Preparing
 3e207b409db3: Waiting
 a4522c0d203b: Layer already exists
 3e207b409db3: Layer already exists
 f5a7f7a3fb28: Pushed
 6bd09f46d0ae: Pushed
 07952c1df7f6: Pushed
 eeb7e16c6369: Pushed
 latest: digest: sha256:7ce256fa83ef1eebcaaaa460c4d73f87f2adf304bc6e6c1b83a19d987cd61ad5
size: 1579
Running after_script
00:02
Saving cache
00:01
Uploading artifacts for successful job
00:02
 Job succeeded

致意。


3
我知道这个问题已经有很多答案了,但是它们对我都没有帮助。
我观察到的是构建镜像非常快,但推送到docker.io时出现了错误:
denied: requested access to the resource is denied

我注意到的是,做这件事情。
docker image ls

揭示了我的图像的最新版本已经几天没有更新了。 我不得不做一些处理。
docker container prune 

摆脱停用的容器,以及一个
docker image prune -a

摆脱旧的镜像。 然后我就能成功地构建和推送我的镜像了。
“被拒绝:请求访问资源被拒绝”不是来自docker.io,而是来自本地的docker。有趣的是,在构建过程中它没有失败。

3

许多答案都谈到了登录。当然需要登录,如果登录后错误仍未解决,请查找推送引用存储库。 在我的情况下,它试图推送到

[docker.io/library/<myimage>]

在我使用<account_name>/<repo_name>:<tag>标记存储库之后,它正常工作了。

docker tag mynginx_image:latest <myaccount>/mynginx:latest
docker push <myaccount>/mynginx:latest

然后它变成了

推送是指仓库[docker.io/<myaccount>/mynginx]


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