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

Sonatype Nexus Docker代理出现Bad Request错误该如何调试?

排查解决步骤

  • 修正Docker客户端的镜像代理配置逻辑:你当前混淆了Docker全局HTTP代理和镜像仓库代理的配置方式,对接Nexus Docker镜像代理不需要配置httpsProxy参数,该参数是用于Docker daemon走HTTP代理访问外部网络的场景,不是用于指定私有镜像仓库代理的。先删除三处错误的httpsProxy配置:
    1. 删除/home/myuser/.docker/config.json中的httpsProxy相关配置
    2. 删除/etc/systemd/system/docker.service.d/https-proxy.conf文件
    3. 执行systemctl daemon-reload重载系统服务配置
  • 正确配置镜像仓库代理:在/etc/docker/daemon.json中添加registry-mirrors配置,指向你的Nexus Docker代理地址,示例如下:
{
  "registry-mirrors": ["https://<你的Nexus服务域名或IP>:8443"],
  "debug": true
}

配置完成后执行systemctl restart docker重启Docker服务。

  • 验证Nexus服务连通性:在客户端执行curl命令测试接口可用性
    curl -v https://<你的Nexus服务域名或IP>:8443/v2/
    
    允许匿名拉取的情况下应返回200状态码,如果返回证书错误,检查证书存放路径:/etc/docker/certs.d/下的子目录名必须和Nexus访问地址完全一致(含端口),证书文件必须命名为ca.crt。
  • 检查Nexus侧端口暴露情况:确认docker-compose配置中已将8443端口映射到宿主机,且服务器防火墙、安全组已开放8443端口的入站访问权限。
  • 测试指定仓库地址拉取:如果配置镜像代理后还是报错,直接执行docker pull <你的Nexus服务域名或IP>:8443/library/hello-world:latest测试,如果该命令执行成功,说明镜像代理配置未生效,可检查docker info输出的Registry Mirrors字段是否为你配置的Nexus地址。
  • 查看Nexus请求日志:之前你查看的是服务运行日志,Nexus默认会在日志目录生成request.log,记录所有入站请求的路径、状态码、来源IP,可通过该日志确认客户端请求是否到达Nexus,以及Nexus返回的状态码具体是多少。
  • 抓包确认请求流向:如果还是无法定位问题,在客户端执行tcpdump抓包,确认pull请求的目标地址是Nexus还是Docker Hub,以及返回Bad Request的具体服务端。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:24:07