我正在按照这个链接创建我的第一个docker映像,它成功了,现在我试图从这个链接将这个映像推到我的docker存储库中。但是每当我试图将这个映像推入存储库时,我就会得到这种类型的错误。

denied: requested access to the resource is denied

注:我已成功登录docker


当前回答

您可能需要在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

其他回答

以防其他人遇到这种情况-在我的情况下,原因是我正在使用(已弃用的)docker合成方法来推送图像。切换到预期的docker推送为我解决了这个问题。

这可能是特定于DigitalOceans容器注册表,但它可能有帮助:

在我的例子中,我的管道在docker推送之后触发了一个清理作业(doctl注册表垃圾收集启动),这将注册表置于只读模式(参见doc)。因此,在清理作业处于活动状态时的下一个推送将被拒绝:对资源的请求访问将被拒绝。

如果doctl注册表垃圾收集get-active返回404,则作业完成,docker推送将成功完成。

OS: Ubuntu16.04

原因:我删除了客户端配置文件(~/.docker/config.json)

解决方案:

重启码头工人。 服务docker重启。 它需要输入登录信息,然后自动生成配置文件。 Docker login——username=yourdockerhubername——email=youremail@company.com

在我把“docker login https://hub.docker.com”改成“docker login docker”之后,它就工作了。并提供用户名和密码。

然后执行以下命令:

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

docker push new-repo:tagname

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

这里,在运行以下命令之前,我已经在Docker Hub中创建了“ubuntu”repo。

例子:

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

docker push aloktiwari2007/ubuntu:latest

还需要注意的重要一点是,在标记图像时,首先使用命名空间标记,然后使用存储库/ mydevrepo标记。这让我在使用Docker文档时感到困惑。之后我使用:

docker login

然后我使用“tagged name”来推送我的图像。

docker push {namespace}/mydevrepo