本文已参加 [新人创作礼] 活动,一起开启掘金创作之旅。
上篇学习了dockerc compose 的基本概念,并成功安装了docker compose。
docker compose 文件格式
docker-compose.yml文件主要包括指定docker-compose的模式应用版本(version),设计基本的容器
配置服务(services),以及设置容器之间通信的网络模式,基本的YAML文件书写格式如下所示:
version: 指定版本号
services:
容器1:
容器设置参数
容器2:
容器设置参数
networks:
网络名:
网络参数设置
简单的docker-compose.yml例子如下
version: 3.8
services:
web:
build: .
ports:
- "5000:5000"
networks:
- eth0
networks:
eth0:
name: net1
重要的关键字说明
(1) – version: 用于设置版本号
其版本号的确定主要参考docker-compose文档Compose file versions and upgrading,
每一个版本号都给定了相关的Docker-Engine的兼容性说明。值得注意的是,在docker-
compose.yml文件中的最大版本的确定实际上是跟主机上安装的Docker-Engine的版本具有直接关
系。在使用时,一定要确定自己主机安装的Docker-Engine的版本。
(2)– services: 容器实体部分
services部分主要是用于确定集群中每个容器执行的行为,实际上services关于容器设置方面其实
和Dockerfile文件具有一定的相关性,部分Dockerfile中设置容器的参数也可以放在services字段
中进行设置。
容器实体部分常用指令:
build: 指定构造镜像上下文路径
image: 指定容器运行的镜像
endpoint_mode: 访问集群服务的方式
cap_add(添加),cap_drop(删除)容器拥有的宿主机的内核功能。
links: 解决容器连接问题
env_file: 从文件中读取环境变量
entropoint: 覆盖Dockerfile中的ENTROPOINT
ports: 建立主机端口到容器端口的映射
command: 覆盖容器启动的默认命令
container_name: 指定容器名称
deploy: 容器部署的配置设置
tty: true 分配一个伪终端
volumes: 将主机的数据或者文件挂载到容器里面
(3)– networks: 容器之间通信的网络部分
networks是主要设置容器之间通信所基于的网络,关于网络的具体配置参数可以参考文献
Networking in Compose,这里仅仅给出一些主要的配置参数。
name: 网络名
network_mode: 设置网络模型
driver: 指定哪种驱动将用于这个网络
enable_ipv6: 启动ipv6
ipam(IP Address Management): IP地址管理