docker-compose network名称定义解读
作者:wwqicode
文章详细介绍了Docker Compose网络名称的生成规则,包括没有自定义网络名、定义后缀和定义前缀的情况,通过设置环境变量`COMPOSE_PROJECT_NAME`,可以更友好的命名网络
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,那么就是当前路径名(取前缀)。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
