摘要

本文主要介绍dockercompose.yml文件的基础格式,以及相关的基础配置的设置信息。

概述

docker-compose文件的编写主要是基于一种配置文件格式yml文件,基本的yml文件格式主要可以参照YAML 入门教程,docker-compose的关键字主要参考文献The Compose Specification

1.yml文件格式说明

这一部分的yml文件格式主要参考YAML 入门教程,在docker-compose.yml文件中会使用到的基础格式如下。

  • 基本语法

*文件格式: .yml
使用缩进表示层级关系
缩进不允许使用tab,只允许空格
缩进空格数不重要,相同层的元素左对齐即可
注释符号:#

  • 数据类型
    – 对象:键值对

key : value

  • – 数组:按次序排列的值

Languages:
docker yaml 命令 docker compose yaml文件_容器 - Ruby
docker yaml 命令 docker compose yaml文件_容器 - Perl
docker yaml 命令 docker compose yaml文件_容器

  • – 特殊符号

docker yaml 命令 docker compose yaml文件_容器 & 建立锚点
docker yaml 命令 docker compose yaml文件_容器 * 引用锚点
docker yaml 命令 docker compose yaml文件_容器

特殊符号的使用具体见文献YAML 入门教程

2.docker-compose.yml文件相关说明

参考文献The Compose Specification

  • docker-compose.yml文件格式说明

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
  • 重要的关键字说明

– version: 用于设置版本号

docker yaml 命令 docker compose yaml文件_docker yaml 命令_07其版本号的确定主要参考docker-compose文档Compose file versions and upgrading,每一个版本号都给定了相关的Docker-Engine的兼容性说明,具体如下图所示。

docker yaml 命令 docker compose yaml文件_YAML_08


docker yaml 命令 docker compose yaml文件_docker yaml 命令_09值得注意的是,在docker-compose.yml文件中的最大版本的确定实际上是跟主机上安装的Docker-Engine的版本具有直接关系。在使用时,一定要确定自己主机安装的Docker-Engine的版本。

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: 将主机的数据或者文件挂载到容器里面

– networks: 容器之间通信的网络部分

networks是主要设置容器之间通信所基于的网络,关于网络的具体配置参数可以参考文献Networking in Compose,这里仅仅给出一些主要的配置参数。

name: 网络名
network_mode: 设置网络模型
driver: 指定哪种驱动将用于这个网络
enable_ipv6: 启动ipv6
ipam(IP Address Management): IP地址管理

总结

这篇文章主要讲述了docker-compose.yml文件配置的基础格式和主要参数的配置信息。