网络模式:服务:XXX 通过网桥

use*_*685 6 docker docker-compose

我想在一些 docker-compose 项目之间共享相同的 VPN 容器。在同一内部docker-compose.ymlnetwork_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
Run Code Online (Sandbox Code Playgroud)
// docker-compose.yml without VPN container
version: '3'
services:
  vpn_user2:
    // container config
    network_mode: 'service:vpn'
networks:
  default:
    external:
      name: vpn_network
Run Code Online (Sandbox Code Playgroud)

前者工作得很好,而后者则说:

ERROR: Service 'vpn_user2' uses the network stack of service 'vpn' which is undefined.

即使vpn连接到 的容器vpn_network正在运行。

我知道这是真的,我没有'vpn'在后一个中定义服务,但是我应该怎么写呢?

--

我还想知道描述行为的文档在哪里network_mode: 'service:XXX',除了https://docs.docker.com/compose/compose-file/compose-file-v3/#network_mode(这对我来说还不够)

小智 1

此后文档可能已更新,但使用以下内容应该可以跨 docker-compose.yml 文件工作。

network_mode: "container:[container name/id]"
Run Code Online (Sandbox Code Playgroud)