You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker配置Nexus镜像源后不指定registry拉取镜像报manifest unknown错误

问题根因

你将Nexus hosted类型Docker仓库配置为Docker镜像源后,执行无registry地址的拉取命令docker pull mongo:4.2.3时,Docker会自动在镜像名前补library/前缀,向Nexus请求/v2/library/mongo/manifests/4.2.3路径,而你提前上传到Nexus的镜像路径为/v2/mongo/manifests/4.2.3,路径不匹配就会返回manifest unknown错误,触发Docker fallback到官方docker.io拉取。
指定registry地址拉取时,Docker不会自动补library/前缀,直接请求你指定的路径,因此可以拉取成功,但镜像名会自带registry前缀不符合预期。

解决方案

方案一:修正Nexus内的镜像路径(推荐,适配离线环境)

操作步骤如下:

  1. 给需要上传到Nexus的官方镜像打标,增加library/前缀,示例如下:
docker tag mongo:4.2.3 xxx.xxx.x.xxx:8083/library/mongo:4.2.3
  1. 推送打标后的镜像到Nexus仓库:
docker push xxx.xxx.x.xxx:8083/library/mongo:4.2.3
  1. 验证拉取:清理本地已有mongo镜像后执行docker pull mongo:4.2.3,即可直接从Nexus拉取到不带registry前缀的镜像,符合使用要求。

方案二:劫持docker.io解析(完全离线环境适配)

如果你的环境完全断网,不需要访问官方Docker Hub,可以用该方案无需修改已上传的镜像路径:

  1. 修改所有Docker客户端的/etc/hosts文件,添加如下内容:
xxx.xxx.x.xxx registry-1.docker.io
  1. 编辑/etc/docker/daemon.json,将docker.io加入不安全仓库列表:
{
  "insecure-registries": ["xxx.xxx.x.xxx:8083", "docker.io"],
  "registry-mirrors": ["http://xxx.xxx.x.xxx:8083"]
}
  1. 重启Docker服务生效:
systemctl daemon-reload && systemctl restart docker

配置完成后,所有指向docker.io的拉取请求都会被转发到你的Nexus仓库,直接拉取mongo:4.2.3即可命中你已上传的镜像。

配置校验

修改完成后执行docker system info,确认如下配置项正确:

  • Insecure Registries包含你用到的仓库地址
  • Registry Mirrors指向你的Nexus仓库地址

内容的提问来源于stack exchange,提问作者Gopi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 07:15:00