type
Post
status
Published
date
Nov 5, 2021
slug
example-2
summary
tags
开发
工具
category
技术分享
icon
password
解决方案:在 ld-wrapper.sh 里注入代理变量
在 文件最顶部(
#!/bin/sh 下一行) 添加如下内容:
用这个循环脚本来正确检测代理是否生效:
🔧 “更进一步”的方法大致原理如下:
Container Station 启动过程大概是这样的:
- QNAP QPKG 系统通过
qpkg.conf定义 Container Station 的安装路径;
- 启动脚本通常位于:
- 这个脚本中会调用一些子脚本(比如
run.sh、start.sh或container-station.py)来实际启动dockerd;
- 你可以直接在这些脚本里添加
export HTTP_PROXY=...环境变量,这样从根源注入,而不是依赖ld-wrapper.sh。
✅ 是否需要用更高级方式?
你现在的需求只是:
- 让 Docker pull 走代理
- 容器正常运行
- 不会频繁升级 Container Station
那么你目前的
ld-wrapper.sh 方案已经:- ✅ 安全
- ✅ 持久性(在不升级 Container Station 情况下)
- ✅ 无副作用
所以没有必要冒风险去改启动脚本体系。
iStoreOS Docker 代理配置备忘录
核心原理
在 iStoreOS 上,Docker 守护进程的代理设置是通过 UCI (Unified Configuration Interface) 进行的,它会将配置写入
/etc/config/dockerd 文件。然后,Docker 的启动脚本 (/etc/init.d/dockerd) 会读取这个 UCI 配置,并动态生成一个临时的 /tmp/dockerd/daemon.json 文件供 Docker 守护进程实际使用。因此,直接修改
/etc/docker/daemon.json 或通过环境变量注入代理通常不会生效。配置步骤
1. 配置 Mihomo (Clash core) 代理服务
确保你的 Mihomo 服务正在 iStoreOS 上运行,并且监听在
192.168.2.2:7890 (或你实际使用的 IP 和端口)。- 检查 Mihomo 监听状态:Bash
确认 Mihomo (进程名通常是
mihomo) 正在监听:::7890(这表示它同时监听 IPv4 的0.0.0.0:7890和 IPv6 的[::]:7890)。
netstat -tulnp | grep 7890- 测试 Mihomo 出站连接: 在 iStoreOS 命令行,通过 Mihomo 代理测试外部网络访问,确保代理本身工作正常。 Bash 确认能看到 Google 的 HTML 内容。
curl -v -x http://192.168.2.2:7890 https://www.google.com --max-time 20- 建议使用纯 HTTP 代理端口 (如果 Mihomo 支持):
如果你的 Mihomo 配置中有单独的
port: 8080(纯 HTTP 代理),优先在 Docker 配置中使用8080端口,而非mixed-port,以获得更好的兼容性。
2. 配置 Docker 守护进程的代理
这是最关键的一步,使用 UCI 命令进行配置。
- 通过 UCI 设置代理信息:Bash
注意: 将
192.168.2.2:7890 替换为你 Mihomo 服务实际监听的 IP 地址和端口。如果你使用的是 Mihomo 的纯 HTTP 端口,请将端口改为 8080。- 删除旧的
daemon.json文件 (避免冲突):Bash
rm -f /etc/docker/daemon.json因为 Docker 启动脚本会生成临时的
daemon.json 文件,保留旧文件可能会导致意外行为。- 重启 Docker 守护进程:Bash
/etc/init.d/dockerd restart- 验证 Docker 是否加载了正确的配置:
检查 Docker 守护进程实际加载的
daemon.json文件内容。BashJSON
cat /tmp/dockerd/daemon.json确认其中包含
http-proxy 和 https-proxy 等字段。例如:{
"proxies": {
"http-proxy": "http://192.168.2.2:7890",
"https-proxy": "http://192.168.2.2:7890",
"no-proxy": "localhost,127.0.0.1,192.168.0.0/16"
}
// ... 其他 Docker 配置
}3. 排除故障 (如果仍然有问题)
- 确认代理节点工作正常: 如果
docker pull仍然超时,但curl测试代理正常,那么问题很可能出在 Mihomo 当前使用的代理节点本身,它可能对 Docker Hub 的流量不兼容或不稳定。尝试在 Mihomo 仪表盘中切换到其他节点或不同协议的节点。
- 正确拉取镜像名称: 确认你要拉取的 Docker 镜像名称是正确的,例如
docker pull hello-world而不是docker pull helloworld。
debian 等系统用systemd管理docker的 配置 Docker pull走代理
✅ 1. 创建配置目录
✅ 2. 编辑代理配置文件
补充内容,实际docker.service.d文件下下属的所有.conf文件都是合并之后覆盖,所以可以直接合并成一个文件。
粘贴以下内容(注意用的是你旁路由 IP 和 HTTP 端口):
✅ 3. 重载 systemd 并重启 Docker
- 作者:老白
- 链接:https://656525.xyz/article/example-2
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。