Compose容器编排
一 入门
(一) 场景
- 一个应用系统,的启动往往依赖了多个容器(Nginx tomcat redis mysq…),每个容器的启动都有先后顺序,一个一个手动管理很麻烦。
- 往往我们会管理多个服务器,每个服务器上有几十个容器,每个容器由分属于不同的web系统,无法记忆,管理繁琐。(项目环境迁移也麻烦)
(二) 简介
DockerCompose
提供的,站在一个项目
角度,管理和编排一定数量的容器。
- 总结
-
- ① 站在项目角度关联多个docker容器
- ② 按照一定的顺序,编排docker容器。
(三) 要素
docker-compose.yml
文件-
- 定义描述一个项目中所有
容器/Service服务
的信息:名字、端口、环境变量、启动顺序、数据卷映射、docker build
- 定义描述一个项目中所有
Project 项目
:一个web项目,其中包含多个容器。Service 服务
:一个容器。
二 使用
1. yum安装
1. 安装扩展yum源
yum install -y epel-release
2. 安装docker-compose
yum install -y docker-compose
3. 验证docker-compose
[root@localhost ~]# docker-compose -v
docker-compose version 1.18.0, build 8dd22a9
2. 入门案例
准备一个项目cms相关容器:nginx、redis
(1) 创建目录,作为项目名
注意:空目录,不要放无关紧要其他文件。
(2) 在项目名目录中,创建docker-compose.yml
注意:文件名,固定,不要改。
(3) 编写资源(容器)清单:docker-compose.yml
# 第一步:先写版本
version: '3'
# 第二步:编写所有服务(容器)
services:
# nginx容器
nginx-1: # 容器名字: 项目名_容器名_x,例如:cms_nginx-1_?
image: nginx:1.21 # 使用的镜像:tag
ports: # 映射容器启动端口,相当于docker run -p
- 88:80
# redis容器
redis-1:
image: redis:5
ports:
- 6379:6379
(4) dockercompose管理服务(容器)
注意:必须在docker-compose.yml所在目录执行。
1. 启动
docker-compose up [-d]
2. 关闭
docker-compose down [-v]
3. 重启
docker-compose restart
4. 查看项目下的服务(容器)
docker-compose ps
说明:查看当前这个项目下的所有服务(容器)
(5) 版本参考
三 模板指令
1. 指令详解
(1) image:
指定该服务(容器),用到的镜像名:
类似:docker run 后面的 镜像名:tag
(2) ports:
指定服务(容器),映射的端口
类似:docker run -p
(3) environment:
指定该服务(容器)的环境变量
类似:docker run -e MYSQL_ROOT_PASSWORD=xxxx
# 第一步:先写版本
version: '3'
# 第二步:编写所有服务(容器)
services:
mysql-1:
image: mysql:5.7
ports:
- 3306:3306
environment:
- MYSQL_ROOT_PASSWORD=admins
(4) env_file:
可以将环境变量的值全部存放在ENV文件中,通过env_file引用这个文件即可。
注意:通常放在当前docker-compose.yml 同级或者子目录中,例如:commons/mysql/ENV
。
# 第一步:先写版本
version: