0x00 简介
1、是什么?
Docker-compose是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。
只要是集群了,少说都是7,8个。Compose是Docker公司推出的一个工具软件,可以管理多个Docker容器组成一个应用。你需要定义一个YAML格式的配置文件docker-compose.yml,写好多个容器之间的调用关系,然后只要一个命令,就能同时启动/关闭这些容器。
2、能干嘛?
docker建议我们每一个容器中只运行一个服务,因为docker容器本身占用资源极少,所以最好是将每个服务单独地分割开来,但是这样我们又面临了一个问题?
如果我需要同时部署好多个服务,但是每个都要单独写Dockerfile然后再构建镜像吗?这样累都累死了。所以docker官方给我们提供了docker-compose多服务部署的工具。
例如要实现一个web微服务项目,除了web服务容器本身,往往还需要加上后端的数据库mysql服务容器。redis服务器,注册中心eureka,什么卡夫卡,甚至还包括负载均衡容器等等。
Compose允许用户通过一个单独的都docker-compose.yml模版文件(YAML格式)来定义一组相关联的应用容器为一个项目(project)。可以很容易地用一个配置文件定义一个多容器的应用。然后使用一条指令安装这个应用的所有依赖。完成构建。Docker-Compose解决了容器与容器之间如何管理编排的问题。
Java spring
Java里面需要对象,就new一个,但是对象多了就难以管理,如何统一管理,就需要applicationContext.xml
的bean
。
docker-compose
Docker需要一个容器就run一个,但是越来越多。也涉及到对象的启动顺序和前提条件等。我能否一键启动,一键stop等
3、官网?
介绍compose如何编写:https://docs.docker.com/compose/compose-file/compose-file-v3
下载安装的地方:https://docs.docker.com/compose/install/
docker-compose推荐使用V3,不要使用V2,但是要与docker的版本匹配才行。
4、安装与卸载?
1、Run this command to download the current stable release of Docker Compose:
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2、添加执行权限
chmod +x /usr/local/bin/docker-compose
3、验证
docker-compose --version
4、卸载
如果使用curl的方式安装:
sudo rm /usr/local/bin/docker-compose
如果使用pip安装的:
pip uninstall docker-compose
Compose核心概念
1文件, 2要素
1文件:docker-compose.yml
两要素
服务(service)
一个个应用容器实例,比如订单微服务、库存微服务、mysql容器
工程(project)
由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml文件中定义。
docker-compose up 等价于,多个docker run
Compose使用的三个步骤
1、编写dockerfile定义各个微服务应用并构建出对应的镜像文件
2、使用docker-compose.yml定义一个完整业务单元,安排好整体应用中的各个容器服务
3、最后,执行docker-compose up命令来启动并运行整个应用程序,完成一键部署上线
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 #停止服务