Docker内部署Clash代理,一是可以对外提供服务,二是不用运行图形化的客户端,而这种客户端通常需要跑在实体机或虚拟机上。在Docker内运行能大大节省资源,可谓非常方便。
需要用到两个Docker镜像,dreamacro/clash
和haishanh/yacd
,前者是Clash核心,后者是用于管理Clash配置的Web UI。
首先准备一个可用的Clash的配置文件,可以在Clash的Profiles找到要用的配置,右键,选择Show In Folder
,会自动打开该配置所在的文件夹并选中,把它复制出来,并改名为config.yaml
,注意原格式是yml
,需要改为yaml
。
修改上面的配置文件,修改或添加以下两条
# 允许来自局域网的连接
allow-lan: true
# 外部控制器的监听地址,0.0.0.0 表示监听所有网络接口
external-controller: '0.0.0.0:9090'
创建Docker容器1
docker run -d --name clash-core --restart=always -p 7890:7890/tcp -p 7891:7891/tcp -p 9090:9090/tcp -v /path/to/clash/data:/root/.config/clash dreamacro/clash
这里我挂载了一个目录/path/to/clash/data
,上面的配置文件要放到这个目录下。另外还需要下载一个Country.mmdb
,需自行搜索下载,不然Docker容器会一直重启,通过日志可以看到需要下载这么个文件而一直不成功。
创建Docker容器2
docker run -d --name clash-yacd-ui --restart=always -p 9091:80 haishanh/yacd
两个容器都正常运行后,就可以通过 http://127.0.0.1:9091
管理Clash了。