@[toc]
问题
使用docker push推送镜像时,出现denied: requested access to the resource is denied的报错。
解析
原因和Git push代码一样,为了安全起见,在Docker Hub无法确定操作者的情况下,是无法完成push操作的。在Git中是通过配置文件SSH Keys来记住用户,那么在Docker Hub中也是通过配置文件。
通常在你第一次使用docker login命令登录你的Docker仓库时,会自动在你的机器上生成一个config.json的文件,目录具体位置不定。如果你是root用户操作,一般在/root/.docker/config.json目录。如果是普通用户,那么可能在~/.docker/config.json目录上。具体还是要看你登录的时候显示的哪个目录。
这里说一下,直接用-u参数指定登录名或者直接docker login在输入用户名密码登录都可以。
例如:↓
画红框的就是你config.json的绝对路径。
解决方法
原因知道了,解决方法其实很简单。只需要使用docker login登录即可。如果上面的目录中有config.json文件,则会更新,如果没有,则会生成一个新的。接着再使用docker push镜像就ok。下次push镜像的时候,也就不需要登录了。
登录:
[root@bogon]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: liuchenyang
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
注意
一定要注意自己上传的时候镜像名称对不对,还有路径对不对,我这边解决这个问题之后还是会报这个错,找了半天才找出来,还有一个问题就是给镜像打包的时候名字有问题,因为我创建了一个liblarby,上传镜像的时候就多了一层目录,所以因为名字不正确(可以查看最上面的第一张图片),才会出现相同的报错,最后,重新push一下,就ok了。(tagname是你的镜像的版本号)
docker push liuchenyang/mycentos:tagname
最后就可以看到我们的镜像存储库了。
总结
相关文章:
①、 Docker发布/上传镜像到dockerhub&&下载/拉取镜像&&删除dockerhub镜像
②、 Linux中安装/部署docker-compose
③、 Docker搭建harbor私有镜像仓库(命令行模式)
④、 Linux中基于Docker搭建harbor私有镜像仓库(超级详细)🔥🔥