前言
我在宝塔运行的青龙Docker需要访问外网,想起来了上次使用的Clash,于是在Docker运行了一下Clash,让青龙使用Clash的代理,此篇文章仅作笔记用途。
开始
登录进入宝塔,点击Docker=>网络=>添加网络,按照图示填写后添加
之后我们的青龙容器的网络也需要设置为clash代理
,并且ip地址是172.0.0.3
开始拉取镜像
本地镜像=>从仓库中拉取
输入镜像名称dreamacro/clash:latest
开始拉取
创建容器
在挂载/映射
中要选择本机目录
,并且挂载目录
和容器目录
都是/root/.config/clash
,权限是读写
(如果目录不存在会自动创建)
并且网络需要选择clash代理
,地址为172.0.0.2
其他按照图示填写后保存,容器会自动开始运行,日志如下:
如果MMDB下载失败,可查看上一个帖子,手动下载MMDB放到Linux的
/root/.config/clash
目录后,重启Clash的Docker
添加订阅地址
然后添加上订阅地址,接下来打开Linux目录/root/.config/clash,在此处运行Linux命令wget -O ~/.config/clash/config.yaml "订阅地址"
,让终端下载后保存为config.yaml文件。
订阅地址应该使用Clash专用的地址,具体可询问购买商家
再次重启一下Clash,查看一下日志
可以看到已经读取到了我们的线路
接下来就是最后的步骤,设置Web控制面板以及Clash的允许IP
* 设置Web控制面板
见Linux中安装Clash并且实现全局代理(纯命令行)番外,有详细讲解
* 修改允许IP
可以发现此时的clash监听的是本机的7890端口,因此目前青龙是无法使用的,需要修改为监听来自所有ip的7890端口
打开Linux目录/root/.config/clash,找到config.yaml
文件打开,修改后保存
allow-lan
为true
- 注释
bind-address
mixed-port
设置为:7890
重启即可。
验证代理
验证是否已经可以使用代理了,这里提供两种方法
- 打开青龙Docker的终端,使用
http://172.0.0.2:7890
代理访问goole之类的网站测试是否能够正常访问
curl --proxy http://172.0.0.2:7890 http://www.google.com.hk
成功返回的HTML,代表代理成功 - 在青龙Web面板中写一个使用代理的py代码
可以返回HTML,即带代表代理成功
问题解决
如果代理失败,请检查
- 青龙Docker和Clash的Docker是否在同一个网络中
- Clash的Docker是否已经允许所有的ip
- 打开Clash的Docker,如果Bash类型的shell启动失败的话,可以使用sh的shell
- 在终端中输入
netstat -tuln
来查看,如果7890端口是127.0.0.1
代表只允许本地,正确的应该是:::7890
)················ Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 :::7890 :::* LISTEN tcp 0 0 :::9090 :::* LISTEN ················
- 打开Clash的Docker,如果Bash类型的shell启动失败的话,可以使用sh的shell