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

Docker通过cntlm代理拉取镜像遇connection reset by peer错误求助

Docker拉取镜像时proxyconnect tcp连接重置问题排查方案

1. 先验证网络基础连通性

  • 在Docker主机上ping cntlm网关的IP,确认两台虚拟机网络互通
  • 用telnet <cntlm-ip> 3128或nc -zv <cntlm-ip> 3128测试3128端口是否开放,连不通先解决防火墙、路由规则这类网络层面问题

2. 检查cntlm网关的可用性

  • 确认cntlm服务正常运行:systemctl status cntlm,异常则重启服务并查看日志cat /var/log/cntlm.log
  • 在cntlm主机本地测试代理连通性:curl -x http://localhost:3128 https://registry-1.docker.io/v2/,返回401 Unauthorized即说明代理能正常转发请求(401是镜像仓库的正常认证提示)
  • 核对cntlm配置文件(通常是/etc/cntlm.conf),确保上游代理(如果有)、认证信息(用户名/密码/NTLM哈希)配置正确

3. 校验Docker守护进程代理配置

  • 检查/etc/docker/daemon.json的配置格式是否正确,注意HTTPS代理指向的是cntlm的HTTP地址:
    {
      "proxies": {
        "default": {
          "httpProxy": "http://<cntlm-ip>:3128",
          "httpsProxy": "http://<cntlm-ip>:3128",
          "noProxy": "localhost,127.0.0.1,你的内网网段"
        }
      }
    }
    
  • 重启Docker服务生效:systemctl restart docker,并用systemctl status docker确认服务正常启动
  • 查看Docker日志排查代理加载问题:journalctl -u docker.service

4. 排查防火墙与SELinux限制

  • 在cntlm主机开放3128端口:firewall-cmd --add-port=3128/tcp --permanent && firewall-cmd --reload
  • 在Docker主机确认出站规则允许访问cntlm的3128端口
  • 临时关闭SELinux测试:setenforce 0,若问题解决需配置SELinux规则允许Docker通过代理连接

5. 直接在Docker主机测试代理

执行curl -x http://<cntlm-ip>:3128 https://registry-1.docker.io/v2/,如果返回401则代理正常,问题出在Docker配置;若仍出现连接重置,继续排查cntlm或网络链路

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 01:05:18