HH爱折腾

HH爱折腾

iStoreOS / OpenWrt:Docker 代理配置完整指南(2026 实测可用)

16
2026-01-05

iStoreOS / OpenWrt:Docker 代理配置完整指南(2026 实测可用)

在 iStoreOS / OpenWrt 上配置 Docker 代理时,很多人会遇到一个共同问题: daemon.json 中写入代理配置会导致 dockerd 无法启动。

经过 2026 年的实测验证,本文给出一套稳定、可复用、官方仓库直连无压力的 Docker 代理配置方案。

📌 背景:为什么 daemon.json 不生效?

在 iStoreOS / OpenWrt 中:

  • Docker 不支持daemon.json 中使用 proxies 字段

  • 一旦写入该字段,dockerd 会直接启动失败

  • docker info 不显示代理

  • 镜像拉取失败或超时

最终确认:

✔️ 必须通过 /etc/init.d/dockerd 注入环境变量,才能让 Docker 使用代理

这是目前唯一稳定、可控、兼容 procd 的方式。

✅ 最终可用方案:修改 dockerd 启动脚本注入代理

1. 编辑启动脚本

路径:

代码

/etc/init.d/dockerd

找到:

bash

procd_open_instance
procd_set_param stderr 1

在下面插入(必须保持单行结构):

bash

procd_set_param env \
    HTTP_PROXY="http://xxxxxxxx" \
    HTTPS_PROXY="http://xxxxxxxxxx" \
    NO_PROXY="127.0.0.1,localhost"

⚠️ 注意事项

  • 不能写成多行 procd_set_param env KEY=...

  • procd 会覆盖前面的,只保留最后一个

  • 所以必须写成同一行(或使用反斜杠续行)

2. 重启 Docker 服务

bash

chmod +x /etc/init.d/dockerd
/etc/init.d/dockerd restart

3. 验证代理是否成功注入

查看 dockerd 是否运行:

bash

ps | grep dockerd

查看环境变量:

bash

cat /proc/$(pidof dockerd)/environ | tr '\0' '\n' | grep -i proxy

你应该看到:

代码

HTTP_PROXY=http://xxxxxxx
HTTPS_PROXY=http://xxxxxx
NO_PROXY=127.0.0.1,localhost

这说明代理已经成功注入 dockerd。

4. 测试镜像拉取

bash

docker pull nginx
docker pull busybox
docker pull jc21/nginx-proxy-manager

如果输出包含:

代码

Pull complete

说明代理完全生效。

🎉 最终效果

  • Docker 所有流量走代理

  • 官方仓库直连稳定快速

  • 不依赖国内镜像源

  • 配置干净、可维护、可复用

  • 完全兼容 iStoreOS 的 procd 启动机制