Docker私有仓库推送镜像时提示404仓库不存在怎么解决?

Prog.玉泽 阅读 44

之前成功搭建了本地Docker私有仓库,但今天推送镜像时突然报错”The name … refers to a repository but no tags are present on the local filesystem”,然后出现404错误。我确认执行过docker login,仓库地址也核对过没问题。尝试重新tag镜像后推送还是同样错误,是不是仓库路径格式写错了?

我的React项目Dockerfile没问题,本地镜像已经build好了。但执行docker push时总是报错:

import React from 'react';

function PushError() {
  return (
    <div>
      <p>Error: failed to push image "my-registry:5000/react-app:latest" with error: unauthorized: authentication required</p>
      <button onClick={() => alert('尝试重新登录仓库!')}>重新验证凭证</button>
    </div>
  );
}

export default PushError;

这个错误到底是仓库配置问题还是权限问题?之前推送其他镜像没问题,这次新建的镜像突然报这个错,是不是私有仓库需要手动创建仓库名?

我来解答 赞 6 收藏
二维码
手机扫码查看
2 条解答
码农雨童
你这个错不是404,是unauthorized认证问题。先确认是否用docker login登录到你的私有仓库,地址要带上端口:docker login my-registry:5000。然后打tag时也要带完整仓库地址,改成这样:

docker tag react-app:latest my-registry:5000/react-app:latest
docker push my-registry:5000/react-app:latest


私有仓库不需要手动创建仓库名,但确保registry服务正常运行,且config.yml开启了鉴权或允许匿名推送。
点赞 6
2026-02-10 19:03
公孙宇航
这个问题看起来是权限或者仓库路径配置的问题,但也有可能是私有仓库本身的状态有点问题。咱们一步步来排查。

首先,这个错误信息 unauthorized: authentication required 明确告诉你权限不够,虽然你说已经执行了 docker login,但还是建议你再检查下登录状态:
docker logout my-registry:5000
docker login my-registry:5000

这样重新登一遍,确保凭证是对的。

然后,确认一下你的镜像 tag 格式是否正确。正确的格式应该是:
my-registry:5000/namespace/image-name:tag

比如你的 React 项目镜像可以 tag 成:
docker tag react-app my-registry:5000/react-app:latest

这里的 react-app 是本地镜像的名字,my-registry:5000/react-app:latest 是你要推送到私有仓库的完整路径。

接下来,推送之前先测试一下能不能拉取其他已经存在的镜像,这样能验证私有仓库服务是否正常运行:
docker pull my-registry:5000/some-existing-image:tag

如果连拉取都失败,那可能是私有仓库的服务有问题,检查一下仓库的日志。

最后,如果你用的是 Docker Registry API v2,默认情况下,第一次推送某个新的 repository(比如这里的 react-app)时,它会自动创建对应的仓库目录。但如果仓库服务做了特殊配置(比如需要手动创建仓库),那你可能得去服务器端手动创建这个仓库路径。

这样更清晰了吧?如果还有问题,可以再看看私有仓库的具体配置有没有改动过。
点赞 11
2026-01-28 21:07