开启子网网关服务
2026/4/21小于 1 分钟
开启子网网关服务
该示例使用 Gvisor 用户空间网络模式开启子网网关服务,把 Docker bridge 网络中的 nginx-test 暴露到飞网。新手测试时建议先使用 /32,只发布一个后端容器地址,访问面更小,也更容易排错。
使用前请先在同目录准备 .env 文件,并填写飞网控制面板创建的授权密钥:
GM_TOKEN=gmzta-authkey-xxxxGvisor 模式启动:
docker compose -f 01-gvisor-subnetnode.yaml up -dTUN 模式启动:
docker compose -f 01-tun-subnetnode.yaml up -d注意:
- 飞网控制面板需要批准该节点指定的子网范围,并配置访问控制策略。
验证:
- 登录飞网后,在不同网络环境下访问共享的容器服务地址,如
http://172.30.0.20开启的 Nginx 服务。
Gvisor 模式配置文件:
version: "3.7"
services:
# 小范围测试使用推荐gvisor
# TUN(内核) 性能好,支持所有协议,并且需要特权模式运行容器。
# 内核模式下,操作系统直接转发数据包,性能最佳,支持所有 IP 协议,TCP 端到端连接完整。
# 用户空间模式会在飞网层终止并重建 TCP/UDP 连接,性能较低,且不支持 SCTP 等协议。
# TUN模型需要配置以下内容:
# network_mode: host
# cap_add:
# - NET_ADMIN
# - NET_RAW
# devices:
# - /dev/net/tun:/dev/net/tun
gmzta-gvisor-subnetnode:
image: registry.cn-beijing.aliyuncs.com/gmzta/gmzta:latest
container_name: gmzta-gvisor-subnetnode
hostname: gmzta-gvisor-subnetnode
environment:
- GM_TOKEN=${GM_TOKEN}
- GM_CONFIG_DIR=/var/lib/gmzta
- GM_TUN=false
- GM_SUBNETNODE=172.30.0.20/32 # 配置子网节点,指定允许访问的子网范围
volumes:
- ${PWD}/gmzta/state:/var/lib/gmzta
restart: on-failure:3
networks:
gmzta-gvisor-subnetnode:
ipv4_address: 172.30.0.10 # 主节点分配固定IP地址
nginx-gvisor-subnetnode:
image: nginx
container_name: nginx-gvisor-subnetnode
hostname: nginx-gvisor-subnetnode
restart: on-failure:3
networks:
gmzta-gvisor-subnetnode:
ipv4_address: 172.30.0.20 # 子网节点分配固定IP地址
networks: # 定义自定义网络
gmzta-gvisor-subnetnode:
name: gmzta-gvisor-subnetnode
driver: bridge
ipam:
config:
- subnet: 172.30.0.0/24
gateway: 172.30.0.1TUN 模式配置文件:
version: "3.7"
services:
gmzta-tun-subnetnode:
image: registry.cn-beijing.aliyuncs.com/gmzta/gmzta:latest
container_name: gmzta-tun-subnetnode
hostname: gmzta-tun-subnetnode
network_mode: host
cap_add:
- NET_ADMIN
- NET_RAW
devices:
- /dev/net/tun:/dev/net/tun
environment:
- GM_TOKEN=${GM_TOKEN}
- GM_CONFIG_DIR=/var/lib/gmzta
- GM_TUN=true
- GM_SUBNETNODE=172.30.0.20/32
volumes:
- ./gmzta/tun-subnetnode:/var/lib/gmzta
restart: on-failure:3
nginx-tun-subnetnode:
image: nginx
container_name: nginx-tun-subnetnode
hostname: nginx-tun-subnetnode
restart: on-failure:3
networks:
gmzta-tun-subnetnode:
ipv4_address: 172.30.0.20
networks:
gmzta-tun-subnetnode:
name: gmzta-tun-subnetnode
driver: bridge
ipam:
config:
- subnet: 172.30.0.0/24
gateway: 172.30.0.1