用 Karing 打造 Docker 加速器
当前因某些不可抗力,国内大部分 Docker 镜像服务不可用。很多人推荐自建镜像源或使用 Cloudflare Workers 镜像,但我们可以直接利用科学上网代理,让 Docker 走全局代理绕过墙。
所需工具
- Docker Engine:
26.1.3
- Karing:
1.0.24.283
操作步骤
本次采用修改 /etc/docker/daemon.json
的方式,配置最简洁。
注:
systemd
环境变量配置也可以参考 官方文档 进行设置。
1. 创建自定义路由(可选)
Karing 默认已包含 geoip/cn
的分流规则,非国内 IP 会自动走代理。若想精准控制 Docker 域名,也可自定义分流:
- 进入
设置 -> 分流 -> 分流规则
- 点击右上角 ✏️ 按钮,添加自定义分流组
- 输入备注:
docker
- 在规则列表中添加规则:
- 选择内置规则集
geosite:docker
- 选择内置规则集
- 保存并应用该规则组
测试方法:
进入 设置 -> 分流 -> 分流规则探测
,测试如下域名是否命中代理规则:
docker.com
docker.io
2. 获取 Karing 的代理地址与端口
- 打开
设置 -> 网络共享
,勾选允许其他主机接入
- 查看
网络接口
,获取当前主机 IP,例如:172.25.83.1
- 查看
设置 -> 端口
,默认端口:- 全局代理:
3066
- 全局代理:
参考共享端口。
3. 配置 Docker 代理
编辑配置文件:
bash
sudo nano /etc/docker/daemon.json
添加以下内容(替换为你的 IP 与端口):
json
{
"proxies": {
"http-proxy": "socks5://172.25.83.1:3066",
"https-proxy": "socks5://172.25.83.1:3066"
}
}
保存并重启 Docker:
bash
sudo systemctl daemon-reload
sudo systemctl restart docker
4. 验证配置
运行以下命令检查代理状态:
bash
docker info
输出示例:
bash
Debug Mode: false
HTTP Proxy: socks5://172.25.83.1:3066
HTTPS Proxy: socks5://172.25.83.1:3066
5. 拉取测试镜像
bash
docker pull python
在 Karing 界面查看连接日志,可以确认 Docker 已通过代理访问 Docker 镜像仓库。
⚠️ 注意事项
- Docker 镜像拉取由 Docker Daemon 负责,非当前终端用户。
- 修改终端 Shell 的
HTTP_PROXY/HTTPS_PROXY
环境变量 无效。 - Docker 旧版本(< v23.0)必须通过 systemd 设置代理。
~/.docker/config.json
的代理配置 不影响拉取镜像,仅作用于docker client
。proxychains
无法影响 Docker 镜像拉取行为。
补充方案
如不想使用全局代理,还可考虑以下方案:
自建 Docker 镜像源:
- 推荐工具:CRProxy(Container Registry Proxy)
Docker 也能愉快科学上网,从此告别“拉不动”的时代 🎉