下面实际上是创建了两个容器
docker-compose.yml
version: '3' # Docker Compose 文件的版本
services:
socat-openwrt:
image: alpine/socat # 使用 alpine/socat 镜像
container_name: socat-proxy-openwrt # 容器名称为 socat-proxy-openwrt
command: "TCP-LISTEN:3201,reuseaddr,fork TCP:192.168.5.10:80" # 命令设置:监听本地端口 3201 并转发到 192.168.5.10 的 80 端口
ports:
- "3201:3201" # 将宿主机的 3201 端口映射到容器的 3201 端口
restart: always
socat-openwrt-dashboard:
image: alpine/socat # 使用 alpine/socat 镜像
container_name: socat-openwrt-dashboard # 容器名称为 socat-openwrt-dashboard
command: "TCP-LISTEN:3202,reuseaddr,fork TCP:192.168.5.10:9090" # 命令设置:监听本地端口 3202 并转发到 192.168.5.10 的 9090 端口
ports:
- "3202:3202" # 将宿主机的 3202 端口映射到容器的 3202 端口
restart: always
这个 docker-compose.yml 文件的作用是通过 socat 镜像创建两个服务,用于将宿主机的指定端口流量转发到内网设备的对应端口,实现跨网络的端口映射。具体作用如下:
-
socat-openwrt 服务:
- 该服务监听宿主机的
3201端口,将所有接收到的流量转发到内网设备192.168.5.10的80端口。 - 这样配置后,用户可以通过访问宿主机的
3201端口来访问内网设备上的 Web 服务(通常运行在80端口)。
- 该服务监听宿主机的
-
socat-openwrt-dashboard 服务:
- 该服务监听宿主机的
3202端口,将所有接收到的流量转发到内网设备192.168.5.10的9090端口。 - 配置后,用户可以通过访问宿主机的
3202端口来访问内网设备的 Dashboard 服务(通常运行在9090端口)。
- 该服务监听宿主机的
要想让openclash 的 dashboard 能通过 另一台主机 或者 域名访问,你还要在里面这样设置 ,我以局域网内的另一台 192.168.5.250 为例子演示

然后你就可以访问 dashboard了

