判断你要代理哪一层
| 目标 | 推荐方式 | 检查什么 | 主要风险 |
|---|---|---|---|
| 只让 1 个容器访问外部服务 | 容器环境变量 | 应用是否读取代理变量 | 应用不认变量 |
| 让 3-5 个容器共用同一路径 | 独立 Docker network | 容器之间是否要互访 | DNS 和内网访问变复杂 |
| 让整台 NAS 的容器都经过网关 | 旁路由或网关规则 | NAS 管理页是否能保留直连 | 改错会影响管理页面 |
| 只临时拉镜像或下载文件 | 命令行临时变量 | 命令执行后是否清理 | 不适合常驻服务 |
最安全的顺序是:先测单容器,再扩到一组容器,最后才碰宿主机或网关。NAS 上的管理页、套件中心、备份任务和 Docker 拉镜像都依赖宿主机网络,先改全局很容易把问题扩大。
单个容器怎么写 HTTP_PROXY?
容器只需要知道本地代理入口,不需要订阅链接。常见写法是把代理地址设成 http://网关IP:端口,同时写大写和小写变量:
environment:
HTTP_PROXY: "http://192.168.1.2:7890"
HTTPS_PROXY: "http://192.168.1.2:7890"
ALL_PROXY: "socks5://192.168.1.2:7891"
NO_PROXY: "localhost,127.0.0.1,192.168.1.0/24,nas.lan"
http_proxy: "http://192.168.1.2:7890"
https_proxy: "http://192.168.1.2:7890"
all_proxy: "socks5://192.168.1.2:7891"
no_proxy: "localhost,127.0.0.1,192.168.1.0/24,nas.lan"
NO_PROXY 不要省。很多 NAS 容器还要访问本机数据库、内网 API、路由器或另一个容器;这些地址被代理接管后,表现会像“外网好了,内网坏了”。
群晖、TrueNAS、Unraid 要注意什么?
群晖 Container Manager 里优先在容器的环境变量页写代理,不要先改 DSM 的系统代理。DSM 系统代理会牵连套件中心和更新任务,排错范围会变大。
TrueNAS SCALE 上常见问题是 App、Docker 和 Kubernetes 风格配置混在一起。只改目标应用的环境变量,别把节点网络、系统 DNS 和容器代理同时调整。
Unraid 上很多容器通过模板维护变量。改完模板后要重建或重启容器,光保存配置不一定会让旧进程读到新变量。
普通 Linux NAS 最直接,用 Compose 文件管理变量。先建一个 curl 或 alpine 测试容器,确认代理可用,再复制到业务容器。
什么时候该用独立 Docker network?
当 3 个以上容器要共用同一出口,又要保留它们之间的互访关系时,独立 Docker network 比逐个写变量更清楚。比如下载器、索引器、媒体库管理器可以放一组,相册、备份、家庭自动化放另一组。
独立 network 不是“更高级就更好”。它会带来两个额外问题:DNS 谁来解析、局域网地址是否绕开代理。如果你只是让一个容器访问 GitHub API 或拉取元数据,环境变量通常更省事。
什么时候用旁路由或网关规则?
多个容器都要按域名或 IP 分流,并且应用本身不支持代理变量时,旁路由或网关规则才值得上。典型场景是下载器、同步工具和命令行任务都需要同一套出口策略,逐个容器改变量反而容易漏。
如果 NAS、电脑和手机共用同一份客户端配置,可以把配套订阅线路作为配置来源之一;NAS 侧仍然只消费本地代理端口或网关,不要把订阅 URL 散落到每个容器里。
怎么确认没有影响宿主机?
看宿主机默认路由。Linux NAS 上执行 ip route,确认 default route 没变;群晖、TrueNAS、Unraid 则看网络设置里的网关是否仍是原路由器地址。
再进测试容器看环境变量:
env | grep -i proxy
最后分别测 3 个方向:容器访问外部地址、容器访问 NAS 内网服务、宿主机访问套件中心或镜像仓库。三个方向都通,才说明代理范围没有误伤宿主机。
排错顺序按什么来?
| 表现 | 更可能原因 | 做什么 |
|---|---|---|
容器里 curl 走代理,应用不走 | 应用不读取环境变量 | 查应用文档,补小写变量或应用内代理设置 |
| 外部访问好了,内网 API 坏了 | NO_PROXY 缺内网地址 | 加 NAS IP、网关 IP、局域网网段和服务域名 |
| 重启后配置丢失 | 只在 shell 里临时 export | 写入 Compose、容器模板或启动参数 |
| NAS 管理页变慢或套件联网异常 | 改到了系统代理或网关 | 回滚宿主机网络,只保留容器级配置 |
| 多容器互相找不到 | network 或 DNS 变化 | 固定容器名、检查 network 和服务发现 |
排错时一次只改一个变量,把 HTTP_PROXY 和 HTTPS_PROXY 跑通,再处理 ALL_PROXY;先保证外部访问,再补 NO_PROXY 修内网访问。