network_mode: service:XXX over the bridge



我想在一些docker compose项目中共享同一个VPN容器。在同一个docker-compose.yml中,network_mode: service:vpn_container成功地通过vpn_container路由所有业务,但我不能在docker-compose.ymls之间使用该方法。

更具体地说:我下面的设置:

首先,为了使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_networkvpn容器正在运行。

我知道这是真的,我没有在后者中定义'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]"

最新更新