简介
Docker-Compose是Docker官方的开源项目,用于实现Docker容器集群的快速编排。
Compose简介
Compose是用于定义和运行多容器 Docker 应用程序的工具,通过Compose,可以使用YML文件来配置应用程序所需要的所有服务。然后,使用一个命令,就可以从YML文件配置中创建并启动所有服务。
Compose使用步骤
- 使用Dockerfile定义应用程序的环境。
- 使用docker-compose.yml配置应用程序的服务,这个配置文件可以按照规则配置任意N个docker容器信息。
- 执行docker-compose up命令来启动并运行整个应用程序。
功能
- 定义和运行多容器应用:Docker Compose允许你通过一个配置文件来定义多个容器的运行方式,并轻松地启动、停止和重启整个应用。
- 容器编排:Docker Compose支持容器的编排,可以根据容器的依赖关系自动启动和停止容器,确保应用在运行时具有正确的环境。
- 网络配置:Docker Compose支持自定义网络配置,使得容器之间的通信更加灵活和可靠。
- 数据卷管理:Docker Compose支持数据卷的挂载和管理,可以轻松地共享和持久化容器数据。
- 扩展性:Docker Compose具有良好的扩展性,可以轻松地添加和删除容器,以满足应用的需求。
组成
- 工程(Project)
- 由一组关联的应用容器组成一个完整的业务单元,在docker-compose.yml文件中定义。
- Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定,工程名即为当前目录名。
- Docker-Compose的工程配置文件默认路径是当前目录下的docker-compose.yml,可使用yml或yaml作为文件扩展名,可通过环境变量COMPOSE_FILE或-f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。
- Docker-Compose允许用户通过一个单独的 docker-compose.yml 模板文件(YAML格式)来定义一组相关联的应用容器为一个项目。
- 服务(Service)
- 一个应用的容器,例如支付服务、订单服务、库存服务、Nginx服务、Mysql服务等。
- 一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖。
- 一个服务当中可包括多个容器实例。
- Docker-Compose并没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡,比如:Consul。
- 容器(Container)
安装
- 前提:必须先安装Docker。
- 打开https://github.com/docker/compose/releases,往下拖动滚动条,找到docker-compose-linux-x86_64安装包进行下载。
- 下载后将文件名重命名为docker-compose
- 将docker-compose文件通过工具上传到Centos系统下的url/local/bin目录中。
- 授予执行权限
sudo chmod +x /usr/local/bin/docker-compose
- 创建软连接,类似于windows系统的快捷方式
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
- 查看docker-compose版本
docker-compose version
部署服mysql服务
- 创建目录,将docker-compose文件都存放在此目录,并在该目录下新建mysql文件夹。
mkdir -p /home/docker-compose
cd /home/docker-compose
mkdir mysql
cd mysql
- 在mysql目录下创建docker-compose.yml
touch docker-compose.yml
- 编辑文件
vim docker-compose.yml
插入配置信息并保存,这里演示启动两个mysql服务。
注意:yaml文件编写一定要注意格式。
version: '1.0' #自定义版本
services: #配置服务,可以配置多个服务
mysqlservice1: #自定义服务名称
image: mysql:latest #镜像以及版本
container_name: mysql_container1 #容器名称
restart: always #是否跟随系统启动自动启动
ports: #端口映射,宿主机对外暴露端口:容器端口
- 3309:3306
volumes: #目录映射
- /root/docker-compose/mysqlservice1/data:/var/lib/mysql-compose
- /root/docker-compose/mysqlservice1/config:/etc/mysql-compose/my.cnf
environment: #mysql的环境配置
MYSQL_ROOT_PASSWORD: 123456
mysqlservice2: #自定义服务名称
image: mysql:latest #镜像以及版本
container_name: mysql_container2 #容器名称
restart: always #是否跟随系统启动自动启动
ports: #端口映射,宿主机对外暴露端口:容器端口
- 3310:3306
volumes: #目录映射
- /root/docker-compose/mysqlservice2/data:/var/lib/mysql-compose
- /root/docker-compose/mysqlservice2/config:/etc/mysql-compose/my.cnf
environment: #mysql的环境配置
MYSQL_ROOT_PASSWORD: 123456
- 启动容器
docker-compose -f /home/docker-compose/mysql/docker-compose.yml up -d
#参数解析
-d:表示后台运行
up: 启动
-f: 指定docker-compose文件位置
其它命令
docker-compose down #停止容器
docker-compose restart #重启容器
- 查看容器信息
docker ps
- 测试连接mysql
docker-compose常用命令
格式:docker-compose + 命令。
build | 重新构建服务 |
---|---|
ps | 列出容器 |
up | 创建并启动容器 |
exec | 容器内执行命令 |
scale | 指定一个服务容器启动数量 |
top | 显示容器进程 |
logs | 查看容器输出 |
down | 删除容器、网络、数据卷和镜像 |
stop/start/restart | 停止/启动/重启服务 |