docker-compose关于网络名的定义

docker-compose关于网络名的定义

  1. 没有定义网络
$ cat docker-compose.yaml 
version: '2'

services:
  zookeeper1:
    image: zookeeper
    container_name: zookeeper1
    environment:
        - ZOO_MY_ID=1
        - ZOO_SERVERS=server.1=zookeeper1:2888:3888

实际使用的网络是:<当前路径名_default>,如果<当前路径名>太长,会截取前缀部分。

例如当然目录名为testdocker,那么最终生产的网络名为:testdocker_default

$ docker network ls
abf87f64de25        testdocker_default   bridge              local
  1. 定义了网络名
$ cat docker-compose.yaml 
version: '2'
networks:
  byfn:

services:
  zookeeper1:
    image: zookeeper
    container_name: zookeeper1
    environment:
        - ZOO_MY_ID=1
        - ZOO_SERVERS=server.1=zookeeper1:2888:3888
    networks:
      - byfn

定义网络名为byfn,那么最终生产的网络名为:<当前路径名_byfn>。
对照场景1,把default替换成了定义的网络名,同样还是使用路径名作为前缀。

$ docker network ls
abf87f64de25        testdocker_byfn   bridge              local
  1. 替换前缀名

当然使用路径名作为网络名是很不友好的,docker-compose使用环境变量来取代路径名。

设置环境变量:COMPOSE_PROJECT_NAME

$ cat .env
COMPOSE_PROJECT_NAME=aaa

此时网络名就变成:

$ docker network ls
967ef0d41dd6        aaa_byfn                       bridge              local

结论:docker-compose的网络名的规则是:_

  1. 如果NETWORKS没有定义,那么就是default。
  2. 如果COMPOSE_PROJECT_NAME,那么就是当前路径名(取前缀)。

你可能感兴趣的:(docker-compose关于网络名的定义)