我想在一些docker compose项目中共享同一个VPN容器。在同一个docker-compose.yml
中,network_mode: service:vpn_container
成功地通过vpn_container
路由所有业务,但我不能在docker-compose.yml
s之间使用该方法。
更具体地说:我下面的设置:
首先,为了使VPN容器可访问,我创建了名为"的虚拟网桥;vpn_network";。
$ docker network create --driver bridge vpn_network
然后写docker-compose.yml
类似于:
// docker-compose.yml with VPN container
version: '3'
services:
vpn:
// container config
vpn_user1:
// container config
network_mode: 'service:vpn'
networks:
default:
external:
name: vpn_network
// docker-compose.yml without VPN container
version: '3'
services:
vpn_user2:
// container config
network_mode: 'service:vpn'
networks:
default:
external:
name: vpn_network
前者工作得很好,而后者说:
ERROR: Service 'vpn_user2' uses the network stack of service 'vpn' which is undefined.
即使连接到vpn_network
的vpn
容器正在运行。
我知道这是真的,我没有在后者中定义'vpn'
服务,但我应该如何编写呢?
--
我还想知道描述network_mode: 'service:XXX'
行为的文档在哪里,而不是https://docs.docker.com/compose/compose-file/compose-file-v3/#network_mode(告诉我还不够(
文档可能已经更新,但使用以下内容应该可以在docker-compose.yml文件中使用。
network_mode: "container:[container name/id]"