我正在按照这个链接创建我的第一个docker映像,它成功了,现在我试图从这个链接将这个映像推到我的docker存储库中。但是每当我试图将这个映像推入存储库时,我就会得到这种类型的错误。
denied: requested access to the resource is denied
注:我已成功登录docker
我正在按照这个链接创建我的第一个docker映像,它成功了,现在我试图从这个链接将这个映像推到我的docker存储库中。但是每当我试图将这个映像推入存储库时,我就会得到这种类型的错误。
denied: requested access to the resource is denied
注:我已成功登录docker
当前回答
我知道这个问题已经有很多答案了,但没有一个对我有帮助。
我观察到的是,构建映像非常快,并将其推到docker。IO导致错误:
denied: requested access to the resource is denied
我还注意到做一个
docker image ls
显示我的图像的最新构建是几天前的。
我必须做一个
docker container prune
来摆脱停止的容器,和一个
docker image prune -a
为了摆脱旧的形象。 然后我就可以成功地建立和推广我的形象。
'denied:对资源的请求访问被拒绝'不是来自docker。我是本地码头工人。有趣的是,它在构建过程中并没有失败。
其他回答
是的,也许有些尴尬,但似乎根本没有关于这个问题的明确文档:我刚刚用私有存储库注册了Docker Pro。我创建了一个私有存储库,然后尝试向其推送。收到了可怕的“拒绝”消息。
推送到我的公共回购很正常,所以我知道我是正确登录的。
在尝试了之前30个答案中与Docker Hub相关的所有内容后…我终于明白了私人回购是如何运作的:它们与公共回购相同,但多了一个步骤。
当推送到存储库- Docker Hub帐户内的任何存储库时,您需要用您的用户名作为image:标记的前缀,例如:
给定以下值,
用户名= yourusername 图像名称=图像 标签=标签
1)标记(或提交)本地图像,添加一个前缀与您的用户名:
docker tag theimage:thetag yourusername/theimage:thetag
注:
如果你在一个组织中,你需要双前缀的图像-像这样:
docker tag theimage:thetag yourusername/yourorganizationname/theimage:thetag
如果你的标签是最新的,:标签部分可以省略;Docker假设:latest如果你没有输入:thetag部分
2)将前缀图像推送到Docker Hub:
docker push yourusername/theimage:thetag
OR
docker push yourusername/yourorganizationname/theimage:thetag
额外的步骤:
要么
在上述第1步之前,在Docker Hub帐户中创建一个私有存储库。
注意,存储库名称必须与您计划推送的映像相同。不要在存储库名称中包含thetag部分。例如,如果你的映像是ubuntu:14.04,你可以将你的存储库命名为ubuntu。
Or
如果你没有提前创建存储库(这不是必需的!):转到Docker Hub中的帐户;点击新推出的回购,然后它的设置选项卡-并使你的回购私有。
我曾见过其他人用两个前缀标记私人回购,例如xyz/abc/theimage:thetag,我认为第二个前缀是我创建的,用于将回购标记为私有。不,这只适用于组织。删除任何第二个前缀和设置我的回购名称只是图像修复了我的拒绝错误!
另一个注意事项:每个repo持有所有带有给定repo名称的标记版本的图像。例如,ubuntu:latest和ubuntu:14.04都将在ubuntu repo中。
有趣的Docker!
对于那些试图将映像推送到自己的Nexus存储库管理器的人,请执行以下操作:
1)登录到您的Nexus存储库管理器(端口8443与特定的Docker主机存储库相关联)
sudo docker login xxx.mydomain.com:8443
2)标记图像与您的NEXUS服务器IP/DNS
sudo docker tag myimage:latest xxx.mydomain.com:8443/myimage:1.0.0
3)推送图片
sudo docker push xxx.mydomain.com:8443/myimage:1.0.0
您可能需要在docker push之前将docker repo切换为private。
感谢Dean Wu提供的答案和ses的评论,在推送之前,请记得注销,然后从命令行登录到您的docker hub帐户
# you may need log out first `docker logout` ref. https://stackoverflow.com/a/53835882/248616
docker login
根据文件:
You need to include the namespace for Docker Hub to associate it with your account.
The namespace is the same as your Docker Hub account name.
You need to rename the image to YOUR_DOCKERHUB_NAME/docker-whale.
所以,这意味着你必须在推送之前标记你的图像:
docker tag firstimage YOUR_DOCKERHUB_NAME/firstimage
然后你就可以推它了。
docker push YOUR_DOCKERHUB_NAME/firstimage
在Azure Devops中创建CI管道以构建docker映像并将其推送到docker Hub时,我也遇到了同样的问题。我所犯的错误是在容器存储库部分提供了错误的条目。
在buildAndPush任务中,我在容器存储库字段中给出存储库名称。实际上,存储库名称应该附加Docker Hub用户名/。 例如,您的用户名是myuser,存储库名称是test,然后提供myuser/test条目。一旦我纠正了这个问题,管道就成功地工作了,图像被推送到我的docker中心存储库
docker处理用户id和存储库的方式可能有点令人困惑。 假设您在docker hub上创建了一个用户帐户xyz。新帐户自动建立名称空间xyz。 然后创建一个名为myrepo的存储库。存储库名称实际上是xyz/myrepo。
要推送一个图像,你应该做:
docker push docker.io/xyz/myrepo
如果需要,可以添加“:latest”或其他标签。
如果你得到的资源访问请求被拒绝错误消息:
访问https://hub.docker.com/并以xyz登录。 单击存储库xyz/myrepo。 点击合作者。 添加xyz作为合作者。