下面实际上是创建了两个容器
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
端口)。
- 该服务监听宿主机的