Docker Compose Pull 超时与代理踩坑记录

Docker Compose Pull 超时与代理踩坑记录

问题一:docker compose pull 直接超时

报错

bash 复制代码
> docker compose pull
Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp 108.160.170.33:443: i/o timeout (Client.Timeout exceeded while awaiting headers)

原因

Docker daemon 无法直连 Docker Hub(国内网络被阻断)。

解决办法

给 Docker 配代理,让 daemon 走代理访问外网。

bash 复制代码
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo vi /etc/systemd/system/docker.service.d/proxy.conf

内容

ini 复制代码
[Service]
Environment="HTTP_PROXY=http://172.24.48.1:7890"
Environment="HTTPS_PROXY=http://172.24.48.1:7890"
Environment="NO_PROXY=localhost,172.24.48.1"

然后

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl restart docker

问题二:配置代理后仍然失败

报错

bash 复制代码
> docker compose pull
Error response from daemon: Get "https://registry-1.docker.io/v2/": read tcp 172.24.48.247:60752->172.24.48.1:7890: read: connection reset by peer

定位方式

bash 复制代码
curl -I https://registry-1.docker.io/v2/ --proxy http://172.24.48.1:7890

结果

vbnet 复制代码
HTTP/1.1 200 Connection established 
curl: (35) OpenSSL SSL_connect: Connection reset by peer in connection to registry-1.docker.io:443

原因

docker域名没有设置代理规则,走了直连

解决办法

在代理(如 Clash)中强制 Docker Hub 走代理

yaml 复制代码
rules:
  - DOMAIN,registry-1.docker.io,PROXY
  - DOMAIN,auth.docker.io,PROXY
  - DOMAIN-SUFFIX,docker.com,PROXY
  - DOMAIN-SUFFIX,docker.io,PROXY

重启 Clash,再试

最终验证

bash 复制代码
curl -I https://registry-1.docker.io/v2/ --proxy http://172.24.48.1:7890
# 成功

docker compose pull
# 成功

优化

  1. 为避免每次拉取新的clash配置时重置自定义 rules,将上述 docker rules 设置到 mixins 中
js 复制代码
module.exports.parse = ({ content, name, url }, { yaml, axios, notify }) => {
  const rules = [
    // ...

    // docker
    "DOMAIN-SUFFIX,docker.com,PROXY",
    "DOMAIN-SUFFIX,docker.io,PROXY",
    "DOMAIN,registry-1.docker.io,PROXY",
    "DOMAIN,auth.docker.io,PROXY"
  ]
  content.rules.unshift(...rules)
  return content
}
相关推荐
GreenTea5 小时前
GrokBot 核心成员 Lauren Tan:每月交付 2000 个 PR 的人,是怎么用 AI 的
前端·后端·架构
mCell6 小时前
用 Knip 清理 AI Coding 留下的冗余代码
前端·ai编程·前端工程化
笃行3507 小时前
使用Rokid AIUI做了一个童年推箱子游戏
前端
excel8 小时前
前端加密的作用与使用场景
前端
计算机魔术师9 小时前
纽约时报版权诉讼披露:微软高管内部称训练 AI 是人类历史上最大规模劳动窃取
前端
去伪存真9 小时前
大模型的参数量为什么那么大?
前端·人工智能
IT_陈寒9 小时前
Java空指针这次真把我坑惨了
前端·人工智能·后端
八荒启·交互动画11 小时前
# Web特效020—让 Web 特效真正动起来:时间循环应该怎么接
前端·webgl·网页特效·八荒启-交互动画·八荒启
动恰客流统计11 小时前
线下零售数字化浪潮下,客流统计的3个核心发展趋势
大数据·前端·人工智能
用户9385156350711 小时前
从小米前端面试题,彻底搞懂闭包、作用域链与 useState 惰性初始化
前端·面试