compose文件补充说明
compose文件用的是yml格式,docker规定了一些指令,使用它们可以去设置对应的东西,它主要分为3个区域:
services:
服务,在它下面可以定义应用需要的一些服务,每个服务都有自己的名字,使用的镜像、挂载的数据卷、所属的网络、依赖那些服务等等;
networks:
应用的网络,在它下面可以定义应用的名字,使用的网络类型等等;
volumes:
数据卷,在它下面可以定义的数据卷(名字等等),然后挂载到不同的服务下去使用。
networks
网络决定了服务之间以及服务和外界之间如何去通信,在执行docker-compose up的时候,docker会默认创建一个默认的网络,创建的服务也会默认地属于这个默认网络。服务和服务之间,可以使用服务的名字进行通信。也可以自己创建网络,并将服务属于到这个网络之中,这样服务之间可以相互通信,而外界就不能够与这个网络中的服务通信,可以保持隔离性。
version: '2'
services:
dog:
image: nginx
ports:
- "8080:80"
networks:
- "animal"
cat:
image: nginx
ports:
- "8081:80"
networks:
- "animal"
networks:
animal:
driver: bridge
进入容器cat,ping dog
下面可以添加一个pig的服务,使用默认网络,来体现自定义网络的属性
version: '2'
services:
dog:
image: nginx
ports:
- "8080:80"
networks:
- "animal"
cat:
image: nginx
ports:
- "8081:80"
networks:
- "animal"
pig:
image: nginx
ports:
- "8082:80"
networks:
- "default"
networks:
animal:
driver: bridge
进入容器cat,ping dog,ping pig
Volumes
在compose文件中,还可以指定一些有名字的数据卷,让服务去使用。方法是:在与networks同级的地方,添加volumes,接着是数据卷的名字。
version: '2'
services:
dog:
image: nginx
ports:
- "8080:80"
networks:
- "animal"
volumes:
- nest:/mnt
cat:
image: nginx
ports:
- "8081:80"
networks:
- "animal"
volumes:
- nest:/mnt
pig:
image: nginx
ports:
- "8082:80"
networks:
- "default"
networks:
animal:
driver: bridge
volumes:
nest:
driver:local
这里在dog容器的/mnt目录下创建一个文件就可以在cat相应的容器中看到