Docker推送镜像到Docker Hub时提示‘UNAUTHORIZED’怎么办?
刚用docker build打包了项目镜像,执行docker push时一直报错:
The push refers to repository [docker.io/myuser/myapp]
denied: requested access to the resource is denied
已经用自己账号docker login成功了,镜像也用docker tag正确打上了myuser/myapp:latest标签。试过重新登录、检查拼写还是不行,是不是Docker Hub需要额外设置权限?
docker login登录了,但默认情况下,Docker Hub 的仓库是私有的,如果你没有显式地把它改成公开,或者没有正确配置权限,就会报这个错。首先确认一下你在 Docker Hub 上是不是有名为
myapp的仓库,如果没有的话,先去创建一个同名的仓库,选公开或者私有都行,看你需求。如果仓库已经有了,那可能是你的镜像命名有问题,或者推送的目标地址和仓库名对不上。还有一种情况是,你的账号可能没权限推送到这个仓库,特别是如果你用了团队协作或者组织账户。检查一下你的镜像标签是不是写成了类似
orgname/myapp:latest而不是myuser/myapp:latest,这种情况需要确保你有对应组织的推送权限。解决步骤很简单:
1. 确保你已经在 Docker Hub 上创建了对应的仓库,名字要完全匹配。
2. 如果用的是组织账户,比如
orgname/myapp,那就确认你在这个组织里有足够的权限。3. 重新执行
docker tag your-image-id myuser/myapp:latest确保镜像标签是对的。4. 再次运行
docker push myuser/myapp:latest。如果还是不行,试着登出再重新登录一次 Docker,命令是
docker logout和docker login,有时候缓存的认证信息会出问题。JS 里面我们经常遇到类似的权限问题,其实 Docker 这块也差不多,权限和命名对不上就容易卡住。希望这些能帮你解决问题,搞不定再来问。
如果已经登录了,再检查镜像的 tag 是否完全匹配你 Docker Hub 上的仓库名:
然后再 push:
如果你确认都对,还是报
UNAUTHORIZED,那可能是你 Docker Hub 账号没创建仓库或者权限不够。你得去 Docker Hub 上手动创建一个仓库myapp,然后设置成 public 或 private,权限会自动生效。如果还不行,可以试试清除本地 Docker 登录缓存:
重新登录后重试 push。我当时就是漏建仓库导致一直失败,手动创建仓库后就好了。
代码放这了,按顺序执行一般能解决。