Docker推送镜像到Docker Hub时提示‘UNAUTHORIZED’怎么办?

端木子瑄 阅读 45

刚用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需要额外设置权限?

我来解答 赞 6 收藏
二维码
手机扫码查看
2 条解答
FSD-钧溢
看起来是权限问题,我猜你可能是在 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 logoutdocker login,有时候缓存的认证信息会出问题。

JS 里面我们经常遇到类似的权限问题,其实 Docker 这块也差不多,权限和命名对不上就容易卡住。希望这些能帮你解决问题,搞不定再来问。
点赞 1
2026-02-15 16:08
一光纬
一光纬 Lv1
这个问题我遇到过,原因是你虽然登录了,但Docker Hub的权限可能没给够。先确认你有没有正确登录:

docker login


如果已经登录了,再检查镜像的 tag 是否完全匹配你 Docker Hub 上的仓库名:

docker tag myapp myuser/myapp:latest


然后再 push:

docker push myuser/myapp:latest


如果你确认都对,还是报 UNAUTHORIZED,那可能是你 Docker Hub 账号没创建仓库或者权限不够。你得去 Docker Hub 上手动创建一个仓库 myapp,然后设置成 public 或 private,权限会自动生效。

如果还不行,可以试试清除本地 Docker 登录缓存:

docker logout
docker login


重新登录后重试 push。我当时就是漏建仓库导致一直失败,手动创建仓库后就好了。

代码放这了,按顺序执行一般能解决。
点赞 10
2026-02-03 19:48