1.docker-compose是什么
2.docker-compose能做什么
3.docker-compose安装
4.docker-compose的使用步骤
5.docker-compose的常用命令
6.docker-compose实践
1.docker-compose是什么
如果我们现在有很多个Docker镜像,按照以往的方式,我们需要一个个手动将它们启动,镜像一多,势必会非常麻烦,docker-compose就是用来解决这个问题的。
Compose是Docker公司的一个工具,可以管理多个Docker容器组成一个应用。我们只需要写好一个YAML格式的docker-compose.yml文件,编写好多个容器之间的依赖关系,启动配置。然后只需要一个命令,就可以批量启动这些容器了。
2.docker-compose能做什么
因为docker本身占用资源就非常少,所以我们一般只会在一个docker里面运行一个服务,但是这样做又会出现了这样的问题:
1)如果我们有成百上千的服务需要部署,然后我们要为每个服务单独编写Dockerfile之后,再构建镜像,创建容器,然后再启动,这样手工操作的成本非常高。
2)假设我们现在要部署一个服务,除了Web服务本身,还需要加上mysql,redis等等数据库,包括了一系列的服务依赖,我们得记住这些服务的启动顺序,不然可能导致服务启动不了。
Compose允许用户通过一个单独的docker-compose.yml文件来定义一组关联的应用容器作为一个项目,可以很轻易地通过配置文件来定义多个容器之间的依赖关系,启动顺序,通过一个命令就能批量启动这些容器,很好地解决了容器编排的问题。
3.docker-compose安装
我们可以查看官网来学习安装步骤:
https://docs.docker.com/compo...
步骤一:
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
步骤二:
chmod +x /usr/local/bin/docker-compose
步骤三:
docker-compose --version
安装成功:
4.docker-compose的使用步骤
我们使用docker-compose的时候,一般有三个步骤:
1)编写Dockerfile定义各个微服务应用并构建出对应的镜像文件。
2)使用docker-compose.yml,完整安排好所有服务,以及依赖关系。
3)执行docker-compose up 命令来启动并运行整个应用程序,完成一键部署上线。
5.docker-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 # 停止服务
6.docker-compose实践
假设我们现在要启动一个tomcat服务,但是这个tomcat服务依赖于redis和mysql,也就是说redis和mysql要先启动,我们才能启动tomcat,我们将如何编写这个docker-compose.yml文件:
version: "3"
services:
microService:
image: tomcat:latest
container_name: mytomcat01
ports:
- "8080:8080"
depends_on:
- redis
- mysql
redis:
image: redis:latest
ports:
- "6379:6379"
volumes:
- /app/redis/redis.conf:/etc/redis/redis.conf
- /app/redis/data:/data
mysql:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: '123456'
MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
MYSQL_USER: 'root'
MYSQL_PASSWORD: 'root'
ports:
- "3306:3306"
volumes:
- /app/mysql/db:/var/lib/mysql
docker-compose up -d
启动三个服务成功!
关停:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。