在容器化环境中部署 Clash 可实现配置热更新与资源隔离,本文详解通过 Docker 安装 Clash 的步骤,解析代理组类型、TUN 模式与系统代理的区别,并提供分流规则配置示例。
Docker 安装 Clash 核心步骤
拉取 Clash 官方镜像
docker pull dreamacro/clash
创建配置文件目录
mkdir -p /etc/clash
启动 Clash 容器
docker run -d --name clash \ -v /etc/clash:/root/.config/clash \ -p 7890:7890 -p 7891:7891 -p 9090:9090 \ --restart=always \ dreamacro/clash
首次启动后,容器会自动生成 config.yaml 模板文件,编辑该文件填入订阅链接或手动配置节点。
验证运行状态
docker logs clash
看到 HTTP Proxy listening at 即表示服务正常。
代理组类型与适用场景
Clash 代理组决定节点选择逻辑,需根据使用场景选择:
| 代理组类型 | 原理 | 适用场景 |
|---|---|---|
| select | 手动指定节点 | 需要固定出口地区 |
| url-test | 自动测速选择延迟最低节点 | 日常跨境访问 |
| fallback | 优先使用列表中首个可用节点 | 保障业务连续性 |
配置示例:
proxy-groups:
- name: auto-group
type: url-test
proxies:
- node-1
- node-2
- node-3
url: http://www.gstatic.com/generate_204
interval: 300
TUN 模式与系统代理的区别
- 系统代理:仅接管 HTTP/HTTPS/SOCKS5 协议流量,配置简单但无法处理游戏客户端、UDP 流量
- TUN 模式:创建虚拟网卡接管所有 TCP/UDP 流量,适用于游戏加速、直播推流等场景
Docker 环境中启用 TUN 需添加特权模式:
docker run -d --name clash \ --privileged \ -v /etc/clash:/root/.config/clash \ -p 7890:7890 \ dreamacro/clash
分流规则写法与优先级
Clash 规则按顺序匹配,常用规则类型:
- DOMAIN:精确域名匹配
- DOMAIN-SUFFIX:域名后缀匹配
- IP-CIDR:IP 段匹配
- GEOIP:国家/地区匹配
优先级:DOMAIN > DOMAIN-SUFFIX > IP-CIDR > GEOIP > FINAL
rules: - DOMAIN-SUFFIX,google.com,auto-group - DOMAIN-KEYWORD,netflix,auto-group - IP-CIDR,10.0.0.0/8,DIRECT - GEOIP,CN,DIRECT - MATCH,auto-group
FAQ
Q:容器启动后无法访问管理面板?
A:检查配置文件是否开启 external-controller: 0.0.0.0:9090,并确认防火墙放行对应端口。
Q:节点延迟正常但无法连接? A:可能是 TUN 模式未开启导致 UDP 流量被拦截,或分流规则将目标域名直连,需检查规则顺序。
Q:如何实现配置热更新?
A:更新订阅链接后执行 docker exec clash clash -t 验证配置,无误后 docker exec clash clash -u 立即生效。
