docker-compose network名称定义

申高卓
2023-12-01

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

2、定义后缀

$ 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>。
相对于之前没有定义的时候,把default替换成了定义的网络名,同样还是使用路径名作为前缀。

$ docker network ls
abf87f64de25        testdocker_byfn   bridge              local

 3、定义前缀

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

设置环境变量:COMPOSE_PROJECT_NAME

$ cat .env
COMPOSE_PROJECT_NAME=aaa

这时网络名如下:

$ docker network ls
967ef0d41dd6        aaa_byfn                       bridge              local

 所以,docker-compose的网络名的规则是:<COMPOSE_PROJECT_NAME>_<NETWORKS>

1、如果NETWORKS没有定义,那么就是default。

2、如果COMPOSE_PROJECT_NAME,那么就是当前路径名(取前缀)。

 类似资料: