Docker部署clash及ui管理界面
Docker部署clash及ui管理界面
Docker拉镜像,创建容器
拉取镜像
clash镜像
1 | docker pull dreamacro/clash |
clash管理面板,yacd镜像
1 | docker pull haishanh/yacd |
容器命令
删除镜像
1 | docker rmi <镜像ID或镜像名> |
查看所有镜像
1 | docker images |
删除单个镜像
1 | docker rmi <image_id> |
查看所有容器(包括停止的容器)
1 | docker ps -a |
查看正在运行的容器
1 | docker ps |
启动容器
1 | docker start <容器ID或名称> |
停止容器
1 | docker stop <容器ID或名称> |
重启容器
1 | docker restart <容器ID或名称> |
删除容器
1 | docker rm <容器ID或名称> |
网络命令
查看网络
1 | docker network ls |
创建网络
1 | docker network create <网络名> |
删除网络
1 | docker network rm <网络名> |
其他命令
查看 Docker 版本
1 | docker --version |
查看 Docker 系统信息
1 | docker info |
查看容器日志
1 | docker logs <容器ID或名称> |
导出容器(将容器文件系统保存为 tar 文件)
1 | docker export <容器ID或名称> > <文件名>.tar |
导入容器(从 tar 文件创建新容器)
1 | cat <文件名>.tar | docker import - <新镜像名> |
准备Clash配置文件
clash配置文件中有clash代理策略,管理设置等配置,为yaml格式,这里举个例子
1 | port: 7890 |
- port、socks-port:设置 HTTP、SOCKS5 代理端口,其他应用程序可配置该代理端口实现科学上网,此处设置的是7890、7891;
- Allow LAN:启用局域网共享代理功能,开启后局域网的其他机器可使用ip:port代理实现科学上网;
- mode:代理级别,一般设置Rule或者Global,此处修改为Global
- external-controller:clash http API的接口地址,如果允许外部调用,需要将IP调整为0.0.0.0,端口默认9090
- secret:http api密码。如果开启局域网,建议设置,如果本机使用,可删除此项配置。
创建并运行容器
这里把容器目录映射在用户目录下
Clash
1 | # 运行 Clash |
如果修改过 config.yaml 中相关端口的配置,请确保以上端口和 config.yaml 中的端口对应。
-v命令后面跟的是数据存储卷的映射,将主机~/clash/config.yaml映射到容器中的/root/.config/clash/config.yaml
-d命令为后台运行容器
Clash-ui
1 | # 运行 Clash UI |
此时已经可以通过浏览器访问http://[主机IP]:5080,然后在输入框内输入 http://[主机IP]:9090,再点击 ADD 按钮,然后点击下方新增的 http://[主机IP]:9090 链接进入监控界面。
这里的主机ip一般用真实ip。
[!NOTE]
此时该端口暴露在公网,需要一定安全限制
在docker的配置yaml文件中,可以通过secret来指定密钥。
设置代理
在Clash-ui的web界面中,左侧【代理】选择节点。
测试代理
我们在宿主机中,输入以下命令,测试代理是否成功。
1 | curl -x http://127.0.0.1:7890 https://ipinfo.io |
如果执行后,显示非本机IP,说明代理成功。我们可在应用程序中使用7890、7891的代理端口。
临时代理
如果你只想在当前终端会话中使用 HTTP 代理,可以通过设置环境变量来实现。打开终端并输入以下命令
1 | export https_proxy=http://127.0.0.1:7890 |
- https_proxy:用于设置 HTTPS 请求的代理。
- http_proxy:用于设置 HTTP 请求的代理。
取消代理设置
1 | unset http_proxy |
脚本测试
这里使用脚本,开启或关闭http代理
编写脚本
1 | #!/bin/bash |
记得加执行权限
1 | chmod +x proxy.sh |
执行脚本
当您在一个脚本中使用 export 命令设置环境变量时,这些变量只在该脚本的子进程中有效。如果您在终端中直接运行脚本(例如 ./proxy_control.sh up),那么脚本会在一个新的子进程中执行,设置的环境变量不会影响到父进程(即您的终端会话)。
要使环境变量在当前终端会话中生效,您可以使用 source 命令(或 . 命令)来执行脚本。这样,脚本将在当前 shell 环境中运行,而不是在子进程中。
使用 source 命令:
1 | source proxy_control.sh up |
或者使用 . 命令:
1 | . proxy_control.sh up |
如果使用./
在新的子进程中执行脚本,脚本中的变量和函数不会影响当前 shell 环境。这意味着脚本中的变量和函数不会影响到当前 shell 环境。
脚本检查
在命令行中,您可以使用 echo 命令查看与代理相关的环境变量:
1 | echo $http_proxy |

