06 Docker 编排
...大约 3 分钟
06 Docker 编排
一、为什么使用编排
1.1 普通服务部署的痛点:
- 启动顺序固定
- 多个命令
- 容器间的启停或宕机,有可能导致 ip 地址对应的容器实例变化,映射出错。目前我的项目配置 ip 是写死的,但是不推荐这种情况,应该服务
1.2 compose 容器编排
compose 的两个要素,服务和工程。服务就是一个个的应用容器实例,比如微服务、mysql、redis;工程是有一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义
步骤:
- 编写 compose 文件
- 修改项目配置的服务地址,重新打包上传构成镜像
docker-compose config -q
检查 yml 文件语法docker-compose up -d
一键部署
1.3 个人体会
一个是解决了上述普通部署的痛点,另一个是启动参数全部记录到了 yml 中,十分方便
**一般默认已经安装好了,如果没有安装可以通过命令安装,CentOS:**yum install docker-compose-plugin
二、实际应用步骤
2.1 查看 Compose 版本
docker compose version
2.2 编写 docker-compose.yml 文件
根据实际应用编写,参考自己的容器启动命令参数来写
version: "3"
services:
springboot:
image: test_springboot:0.1
environment:
TZ: Asia/Shanghai
ports:
- 8080:8080
volumes:
- /usr/docker/home/ruoyi:/home/ruoyi
depends_on:
- mysql
- redis
mysql:
image: mysql:5.7
ports:
- 3306:3306
volumes:
- /usr/docker/mysql/log:/var/log/mysql
- /usr/docker/mysql/data:/var/lib/mysql
- /usr/docker/mysql/conf:/etc/mysql/conf.d
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123456
MYSQL_ALLOW_EMPTY_PASSWORD: no
MYSQL_DATABASE: catering_manage
MYSQL_USER: user1
MYSQL_PASSWORD: user1
command: --default-authentication-plugin=mysql_native_password
redis:
image: redis:6.0.16
ports:
- 6379:6379
volumes:
- /usr/docker/redis/redis.conf:/etc/redis/redis.conf
- /usr/docker/redis/data:/data
environment:
TZ: Asia/Shanghai
command: redis-server /etc/redis/redis.conf
2.3 检查 yml 文件
docker compose config -q
什么也没有输出证明没问题。
2.4 启动所有编排服务
docker compose up -d
三、Docker Compose 容器自启动
重启宿主机后,compose 中的容器并不会启动,使用 docker run 启动容器时只需要加上 --restart=always 就行,但是在 compose 中并不可以,因此我们可以写一个启动脚本,放入 /etc/profile.d 目录中。系统启动后就会自动执行该目录下的所有 shell 脚本:
cd /etc/profile.d
vim start-docker-compose.sh
插入命令如下:
docker compose -f /usr/docker/docker-compose.yml up -d
然后重新启动服务器查看一下效果,重启后可以直接看到命令行窗口输出了 docker-compose 的信息:
[+] Running 3/3
⠿ Container docker-redis-1 Started 1.1s
⠿ Container docker-mysql-1 Started 1.0s
⠿ Container docker-springboot-1 Started 1.5s
[root@localhost ~]#
使用 docker ps 可以看到容器也已经启动。
四、Docker 网络
Docker 启动后,会产生一个虚拟的网桥。使用 compose 编排容器后,如果 yml 文件中没有配置网桥,compose 会自动生成一个默认的网桥,编排的容器都在这个网桥中。
另外三个是默认的,查看 compose 生成的网桥:
docker network inspect docker_default
附:常用命令
Compose常用命令
docker compose -h # 查看帮助
docker compose up # 启动所有docker-compose服务
docker compose up -d # 启动所有docker-compose服务并后台运行
docker compose down # 停止并删除容器、网络、卷、镜像。
docker compose exec yml里面的服务id # 进入容器实例内部 docker-compose exec docker-compose.yml文件中写的服务id /bin/bash
docker compose ps # 展示当前docker-compose编排过的运行的所有容器
docker compose top # 展示当前docker-compose编排过的容器进程
docker compose logs yml里面的服务id # 查看容器输出日志
docker compose config # 检查配置
docker compose config -q # 检查配置,有问题才有输出
docker compose restart # 重启服务
docker compose start # 启动服务
docker compose stop # 停止服务
Powered by Waline v3.3.0