【发布时间】:2022-08-04 04:12:28
【问题描述】:
我正在尝试配置一个 docker-compose 堆栈,其中包含一个连接到 VPN 的容器,以及另一个公开 HTTP 服务的容器,该服务只能通过该 VPN 连接访问。
我在网上搜索,发现 docker-compose.yml 中的 network_mode: service:<serviceName> 设置应该可以解决问题,但它在我的环境中不起作用。
如果我使用docker run 和--network=container:<containerName> 设置分别启动两个容器,一切正常,我可以使用curl localhost:8080 正确连接到远程HTTP 服务
这是具有两个单独命令的工作配置:
docker run --rm --name vpn --privileged --hostname vpn --publish 127.0.0.1:8080:80 --device /dev/net/tun --cap-add NET_ADMIN registry.internal.com/vpnclient
docker run --rm --name proxy --network=container:vpn registry.internal.com/proxy
这是 docker-compose.yml 不起作用:
version: \'3\'
services:
vpn:
container_name: vpn
image: registry.internal.com/vpnclient
privileged: true
ports:
- 8080:80
devices:
- /dev/net/tun
cap_add:
- NET_ADMIN
sysctls:
- net.ipv6.conf.all.disable_ipv6=1
restart: unless-stopped
proxy:
container_name: proxy
image: registry.internal.com/proxy
depends_on:
- vpn
network_mode: service:vpn
restart: unless-stopped
标签: docker docker-compose