【Docker Compose】11. Docker Compose初识

136 阅读3分钟

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版本对应

20210912093138.png

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 中最简单的配置。

  1. 创建一个目录,目录名建议为项目名。

  2. 在目录中创建 docker-compose.yml

    touch docker-compose.yml
    
  3. 编辑 docker-compose.yml 定义Project中的Service

    version: "3.0" # 目前最高4.0
    
    services:
      # 服务名(唯一)
      tomcat: 
        # 创建服务所使用镜像(镜像名:镜像版本)
        image: tomcat:8.0-jre8
        # 服务映射端口(数组形式)
        ports:
          - 8080:8080
    

    上面配置表示:该Project中只有一个Service,该Serivce名称为tomcat,启动镜像为tomcat:8.0-jre8,宿主机映射端口为8080。

  4. 运行Docker Compose,启动该Project的所有Service。

    docker-compose up
    

    启动Docker-Compose时必须保证运行命令的目录中必须存在 docker-compose.yml 文件。

    该命令默认容器前台启动。