如何在版本2 docker-compose定义文件中定义网络?

mat*_*ter 10 docker docker-compose

关于网络文档目前对此非常模糊 - 如何实现docker-compose.yml 创建虚拟网络,让它定义的服务(容器)在该网络上进行通信?

对于为docker-compose定义的容器集合,此方案中的目标不依赖于预定义的网络.而是在docker-compose定义文件中自定义网络定义.

使用预定义的网络,如果应用程序A使用名称B作为主机名来访问打包B在其端口9000 内部的应用程序,则下面的内容将起作用.host:port它将用于它B:9000(更具体地说,mongodb://B:9000在我的特定情况下的uri)).

foo:
  net: my-pre-defined-network
  container_name: A
  image: foo
bar:
  net: my-pre-defined-network
  container_name: B
  image: bar
  ports:
    - "9000:9000"
Run Code Online (Sandbox Code Playgroud)

但我的观点是在docker-compose配置中定义一个网络,而不是假设一个是先验定义的......

TL; DR

将自动创建默认网络.有关如何处理此网络中的容器,请参阅https://docs.docker.com/compose/networking/的开头部分.

dne*_*hin 9

default只要您使用版本2格式,Compose将为您创建网络,但如果您想自定义网络,则文档位于此处:

您可以networks在Compose文件的顶级创建一个部分,并在networks每个服务的部分中引用它们.但您不需要,只需使用下面评论中所述的默认网络.