Docker Compose概述
Docker Compose是以单引擎模式(Single-Engine Mode)进行多应用的部署和管理(单引擎模式的服务编排);
解决的问题:一个完整应用的各协同服务的部署和管理,如一个完整网上商城后端应用的各个微服务;
解决的方式:通过一个声明式的YML配置文件描述整个应用,根据该文件配置执行命令完成部署;
1.Docker Compose 术语
Docker Compose运行目录下的所有文件(docker-compose.yml)组成一个工程,一个工程包含多个服务,
每个服务中定义了容器运行的镜像、参数、依赖,一个服务可包括多个容器实例;
Docker Compose将所管理的容器分为三层,分别是:
- 工程(project)
- 服务(service)
- 容器(container)
2.Docker Compose使用步骤
Docker Compose使用的三个步骤:
- 使用 Dockerfile 定义应用程序的环境;
- 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行;
- 最后,执行 docker-compose up 命令来启动并运行整个应用程序;
3.docker-compose.yml
Docker Compose配置文件第一层级key包含:
- version
- services
- networks
- volumes
3.1 version
version是必须指定的,而且总是位于文件的第一行,它定义了Compose文件格式(主要是 API)的版本;
version和Docker引擎的版本号有一个对应关系:
Compose file version | Docker引擎 |
---|---|
1 | 1.9.0+ |
2.0 | 1.10.0+ |
2.1 | 1.12.0+ |
2.2, 3.0, 3.1, 3.2 | 1.13.0+ |
2.3, 3.3, 3.4, 3.5 | 17.06.0+ |
2.4 | 17.12.0+ |
3.6 | 18.02.0+ |
3.7 | 18.06.0+ |
使用的是哪个版本的Docker引擎,version就写对应的版本号;
3.2 services
services用于定义不同的应用服务:
version: "3"
services:
mysql:
image: mysql:8.0.16
environment:
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_USER=root
- MYSQL_DATABASE=test
- MYSQL_PASSWORD=root
volumes:
- mysql_data:/var/lib/mysql
- ./mysql.ini:/etc/mysql/conf.d/my.cnf
- ./init-mysql.sql:/docker-entrypoint-initdb.d/1-init-mysql.sql
- ./init-master.sql:/docker-entrypoint-initdb.d/1-init-master.sql
command: [