Docker推送镜像到私有Registry时认证失败怎么办?

西门耘郗 阅读 4

我在本地搭了个私有Docker Registry,用的是HTTP(没配HTTPS),也加了insecure-registries配置。但每次执行 docker push my-registry:5000/my-vue-app 都报“unauthorized: authentication required”。明明没开认证啊,是不是哪里漏了?

我的Vue项目打包成镜像的Dockerfile没问题,本地run也能起来。下面是App.vue里的一段测试代码:

<template>
  <div id="app">
    <h1>Hello from Vue in Docker!</h1>
    <p>Registry test</p>
  </div>
</template>

<script>
export default {
  name: 'App'
}
</script>
我来解答 赞 1 收藏
二维码
手机扫码查看
1 条解答
翼杨的笔记
遇到这种情况,首先要确认的是你的私有Registry是否真的没有开启认证。即使你在配置文件中没有设置认证,Registry默认是启用基本认证的。你可以检查一下你的Registry配置文件,确保没有不小心开启了认证。

其次,虽然你提到了已经配置了insecure-registries,但有时候这个配置可能没有生效或者没有正确配置。你需要确保Docker客户端能够识别这个配置。可以在/etc/docker/daemon.json中添加如下配置,然后重启Docker服务:
{
"insecure-registries" : ["my-registry:5000"]
}

记得重启Docker服务后,再尝试推送镜像。

另外,如果Registry真的没有开启认证,而你仍然收到认证错误,可能是之前有登录记录导致的。可以尝试清除登录信息,然后再试一次:
docker logout my-registry:5000
docker push my-registry:5000/my-vue-app


最后,确保你的Registry服务正常运行,可以通过浏览器访问Registry的地址(比如http://my-registry:5000/v2/_catalog)来确认它是否返回了预期的结果。

希望这些步骤能帮你解决问题。记得转义特殊字符,特别是在配置文件中。
点赞
2026-03-20 19:02