Docker Compose介绍
Compose是Docker官方的开源项目(Docker也时Docker官方的开源项目),负责实现对Docker容器集群的快速编排。从功能上看,跟OpenStack中的Heat十分类似。
Compose定位是:定义和运行多个Docker容器的应用(Defining and running mult-container Docker applications),其前身是开源项目Fig。
Compose只能定义和运行多个Docker容器,而不能实现多个容器之间资源的分配,该工作由K8S来完成。
容器编排的意思就是,比方说现在需要使用Docker运行一个Web项目app、MySQL和Redis。app依赖于MySQL和Redis,所以app的启动不能在MySQL和Redis之前,要不然app就会报错。如果我们不手动控制运行顺序,那么我们就需要一个容器编排工具来控制多个容器的启动顺序了。
Compose对于编排的实现大体实现为:允许用户通过一个单独的 docker-compose.yml
模板文件来定义一组相关联的应用容器为一个项目(project)。
Docker Compose核心概念
- 服务(Service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
- 项目(Project):由一组关联的应用容器组成的一个完整业务单元,在
docker-compose.yml
文件中定义。
一个Project中可以存在多个Service。
容器编排是面向Project的容器编排,一个Project对应一个 docker-compose.yml
。
该Project和我们平时理解的Project不一样,不需要去创建一个Project,并设置项目名,描述等等。为什么叫Project,意思就是让我们从我们开发项目的角度上,连带着项目所依赖的应用,让Compose来管理,从而构建成Compose中的一个Project。
Compose和Docker版本对应
Docker Compose安装
因为Docker-Compose是Docker开源的另外一个项目,所以在Linux系统安装的Docker中是没有安装Compose的,但是Windows系统中有。
1. Linux安装
sudo curl -L https://github.com/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
2. Windows安装
curl -L https://raw.githubusercontent.com/docker/compose/1.25.5/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
3. 安装成功
输入,显示版本号即安装成功:
docker-compose -v
第一个Docker Compose程序
该程序仅仅展示docker-compose.yml
中最简单的配置。
-
创建一个目录,目录名建议为项目名。
-
在目录中创建
docker-compose.yml
touch docker-compose.yml
-
编辑
docker-compose.yml
定义Project中的Serviceversion: "3.0" # 目前最高4.0 services: # 服务名(唯一) tomcat: # 创建服务所使用镜像(镜像名:镜像版本) image: tomcat:8.0-jre8 # 服务映射端口(数组形式) ports: - 8080:8080
上面配置表示:该Project中只有一个Service,该Serivce名称为tomcat,启动镜像为tomcat:8.0-jre8,宿主机映射端口为8080。
-
运行Docker Compose,启动该Project的所有Service。
docker-compose up
启动Docker-Compose时必须保证运行命令的目录中必须存在
docker-compose.yml
文件。该命令默认容器前台启动。