Docker-compose是docker官方的开源项目,负责实现对docker容器的集群的快速编排(通过yaml文件docker-compose.yml管理写好容器之间的调用关系只需一个命令就能实现容器的通识开启或关闭)。
类比spring容器,spring管理的是bean而docker-compose管理的是容器;可以解决大规模集群应用的编排问题(不使用docker-compose要进行不停的docker run而使用了就会一键启动或关闭)。
最新版的docker已经内置了docker-compose:如果是较低版本就要在官网上下载:https://docs.docker.com/compose/install/下载可能需要魔法,注意版本的对应:
curl -SL https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
下载好之后或者docker最新版直接查看:docker compose version
Docker-compose核心概念:一文件:docker-compose.yml两要素:服务(mysql容器,redis容器,nginx容器,或者是一个库存服务,定单服务),工程(就是多个服务组成的一个完整的服务就是工程)
Compose使用三步骤:
- 编写sockerfile定义各个微服务应用并构建出对应的镜像
- 使用docker-compose.yml定义一个完整的业务单元安排好整体编排的容器执行顺序和配置服务
- 最后执行docker-compose up命令来启动并运行整个应用程序,完成一键部署或停止。
准备好一个简单的springboot项目,并构建成镜像:
使用docker-compose之前
Before:(启动顺序是固定的)
先启动一下mysql
再启动redis
在跑起来项目:
有多个run命令,且容易在服务器宕机时IP发生变化导致映射出错
使用docker-compose之后
After:编辑yml文件:
写入:
version: "3"
services:
microService:
image: zzyy_docker:1.6
container_name: ms01
ports:
- "6001:6001"
volumes:
- /app/microService:/data
networks:
- alibaixiu_net
depends_on:
- redis
- mysql
redis:
image: redis:6.0.8
ports:
- "6379:6379"
volumes:
- /app/redis/redis.conf:/etc/redis/redis.conf
- /app/redis/data:/data
networks:
- alibaixiu_net
command: redis-server /etc/redis/redis.conf
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: '123456'
MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
MYSQL_DATABASE: 'db2021'
MYSQL_USER: 'zzyy'
MYSQL_PASSWORD: 'zzyy123'
ports:
- "3306:3306"
volumes:
- /app/mysql/db:/var/lib/mysql
- /app/mysql/conf/my.cnf:/etc/my.cnf
- /app/mysql/init:/docker-entrypoint-initdb.d
networks:
- alibaixiu_net
command: --default-authentication-plugin=mysql_native_password #解决外部无法访问
networks:
alibaixiu_net:
注意位置:
参考命令:
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 yml里面的服务id /bin/bash
docker-compose ps #展示当前docker-compose编排过的运行的所有容器
docker-compose top #展示当前docker-compose编排过的容器的进程
docker-compose logs yml里面服务的id #查看容器输出的日志
docker-compose config -q #检查配置有问题才输出
docker-compose restart/start/stop #重启/启动/停止服务
参考项目:点击参考项目!
如需要阳老师笔记私信!素材来源于@尚硅谷雷丰阳老师!致敬阳哥教会了我docker!