本文详解在Docker环境中部署Clash代理容器的完整步骤,涵盖镜像拉取、配置文件编写、容器启动及TUN模式切换等核心操作,并提供代理组类型选择与分流规则配置建议。
环境准备与镜像拉取
Docker安装Clash前需确认宿主机已安装Docker环境,执行以下命令检查Docker状态:
docker --version
若未安装,需先完成Docker引擎部署,确认环境就绪后,拉取Clash官方镜像:
docker pull dreamacro/clash
建议使用latest标签以获取最新版本,也可指定具体版本号以保证配置稳定性。
配置文件准备
Clash运行依赖YAML格式配置文件,创建配置目录并编辑核心文件:
mkdir -p /etc/clash vi /etc/clash/config.yaml
配置文件需包含以下基础字段:
port: 7890
socks-port: 7891
allow-lan: false
mode: rule
external-controller: 0.0.0.0:9090
proxies:
- name: "节点名称"
type: ss
server: your-server.com
port: 443
cipher: aes-256-gcm
password: your-password
proxy-groups:
- name: "自动选择"
type: url-test
proxies:
- 节点名称
url: http://www.gstatic.com/generate_204
interval: 300
容器启动与端口映射
完成配置后,通过Docker运行Clash容器:
docker run -d --name clash \ -v /etc/clash/config.yaml:/root/.config/clash/config.yaml \ -p 7890:7890 \ -p 7891:7891 \ -p 9090:9090 \ --restart unless-stopped \ dreamacro/clash
端口映射说明:7890为HTTP/HTTPS代理端口,7891为SOCKS5代理端口,9090为RESTful API控制端口。
TUN模式与系统代理区别
Clash支持两种运行模式:TUN模式与系统代理模式。
系统代理模式仅处理HTTP/HTTPS流量,适用于浏览器网页访问场景,TUN模式则可接管全部网络流量,包括UDP协议及游戏数据包,实现更全面的流量转发。
启用TUN模式需在配置中添加:
tun:
enable: true
stack: system
dns-hijack:
- 8.8.8.8
- 114.114.114.114
TUN模式消耗更多系统资源,但能解决部分应用无法走代理的问题。
分流规则配置
Clash通过规则匹配实现智能分流,主要规则类型包括:
- DOMAIN:精确匹配域名
- DOMAIN-SUFFIX:匹配域名后缀
- IP-CIDR:匹配IP段
- GEOIP:匹配国家/地区
规则按顺序匹配,命中后执行对应策略,建议配置顺序为:直连规则 → 代理规则 → 拒绝规则 → 兜底策略。
代理组类型选择
代理组配置决定节点切换策略:
| 类型 | 特性 | 适用场景 |
|---|---|---|
| select | 手动选择节点 | 需要固定节点 |
| url-test | 自动测速选择延迟最低 | 日常上网 |
| fallback | 主节点故障自动切换 | 追求稳定性 |
日常使用推荐url-test类型,设置测速URL与间隔时间即可实现自动选优。
FAQ
现象:容器启动后无法连接代理
原因:配置文件语法错误或节点信息有误
解决方法:使用docker logs clash查看错误日志,检查YAML格式缩进及节点参数
现象:TUN模式下部分应用无法上网
原因:DNS劫持冲突或TUN栈兼容性问题
解决方法:调整dns-hijack参数或将stack改为gvisor
现象:代理规则未生效
原因:规则优先级排列错误
解决方法:检查规则顺序,确保直连/代理分类清晰
