什么是 Docker Compose

ComposeDocker 官方的开源项目,负责实现Docker容器集群的快速编排,开源代码在 https://github.com/docker/compose 上。

我们知道使用 Dockerfile 模板文件可以让用户很方便的定义一个单独的应用容器,其实在工作中,经常会碰到需要多个容器相互配合来完成的某项任务情况,例如工作中的web服务容器本身,往往会在后端加上数据库容器,甚至会有负责均衡器。

Compose 就是来做这个事情的,它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML格式)来定义一组相关联的应用容器为一个项目( project )

Compose 中有两个重要的概念:

●  服务( service ):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例

●  项目( project ):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 中定义

Compose 项目是由Python编写的,实际上就是调用了Docker服务提供的API来对容器进行管理,因此,只要所在的操作系统的平台支持Docker API,就可以在其上利用Compose来进行编排管理。

为什么要使用 Docker Compose

假如有几十上百个容器,并且容器之间还存在依赖,光是忙着搭建容器都耗掉一天了,还谈什么Devops,那有没有什么方便快捷的组建,可以让我们通过一个配置就搞定容器编排和运行呢?

Docker Compose 的特点

Docker Compose 就是为了简化多容器配置和管理工作而生的,可以简化大量重复的手动工作,具有以下主要特点:

  • 提供工具用于定义和运行多个docker容器应用

  • 使用yaml文件来配置应用服务( docker-compse.yml )

  • 可以通过一个简单的命令 docker-compse up 可以按照依赖关系启动所有服务

  • 可以通过一个简单的命令 docker-compose down 停止所有服务

  • 当一个服务需要的时候,可以很简单地通过 --scale 进行扩容

Docker Compose 的考虑理由

  • 可移植性

    Docker Compose仅需一个命令即可提供完整的开发环境:docker-compose up,然后使用 docker-compose down 轻松将其拆解。 这使我们的开发人员可以将开发环境保持在一个中立位置,并帮助我们轻松地部署应用程序。

  • 测试

    Compose的另一个重要功能是通过将其置于自己的环境中,以快速可重复的方式支持运行单元和E2E测试。这意味着,您可以运行与生产环境非常相似的环境,而不是在本地/主机系统上测试应用程序。

  • 单个主机上的多个隔离环境

    Compose使用项目名称将环境彼此隔离,这带来了以下好处:

    • 您可以在一台计算机上运行同一环境的多个副本
    • 它可以防止不同的项目和服务相互干扰

Docker Compose的使用场景

  • 单主机部署

    传统上,Compose专注于开发和测试,但现在可用于在单个主机系统上进行部署和管理容器的整个部署过程。

  • 开发环境

    Compose提供了在孤立的环境中运行应用程序的能力,该环境可以在安装了Docker的任何计算机上运行。 这使测试你的应用程序变得非常容易,并提供了一种尽可能接近生产环境的工作方式。

    Compose文件管理应用程序的所有依赖项(数据库,队列,缓存等),并且可以使用单个命令创建每个容器。

  • 自动化测试环境

    持续集成和整个开发过程的重要组成部分是自动化测试套件,该套件要求可以在其中执行测试的环境。Compose提供了一种方便的方法来创建和销毁与您的生产环境接近的隔离测试环境。

安装Docker Compose

  • 可以参考官方网站:https/docs.docker.com/compose/install/

  • 基本只要两步:

    1. sudo 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. sudo chmod +x /usr/local/bin/docker-compose
  • 测试安装版本:

    docker-compose --version

如何使用 Docker Compose

使用 Compose 基本上只要三步:

  1. 通过编辑 Dockerfile 定义应用程序发布所需的运行环境
  2. 通过编辑 docker-compose.yml 文件定义多个容器一起运行的环境和相互关系
  3. 运行 docker-compose up 开始你的整个应用系统

Docker Compose 命令

Compose 大部分命令的对象即可以是项目的本身,也可以是指定为项目中的服务或者容器。

执行 docker-compose [COMMAND] --help 或者 docker-compose help [COMMAND] 可以查看命令的帮助信息

  • 具体的使用格式

    docker-compose [-f=<arg>...] [options] [COMMAND] [ARGS]

  • 参数选项

    -f,--file file指定模板文件,默认是docker-compose.yml模板文件,可以多次指定

    -p,--project-name name指定项目名称,默认使用所在目录名称作为项目名称

    --x-networking 使用Docker的后端可插拔网络特性

    --x-networking-driver driver指定网络的后端驱动,默认使用bridge

    --verbose 输入更多的调试信息

    -v,--version 输出版本信息

官方链接:https/docs.docker.com/compose/reference/build/

模版文件

模板文件是 Compose 的核心,涉及的指令关键字比较多,但是大部分的指令与docker run相关的参数的含义是类似的。

Docker Compose 的介绍、安装与使用的更多相关文章

  1. docker compose线下安装

    Compose 是一个用户定义和运行多个容器的 Docker 应用程序.在 Compose 中你可以使用 YAML 文件来配置你的应用服务.然后,只需要一个简单的命令,就可以创建并启动你配置的所有服务 ...

  2. Docker Compose + Traefik v2 快速安装, 自动申请SSL证书 http转https 初次尝试

    前言 昨晚闲得无聊睡不着觉,拿起服务器尝试部署了一下Docker + Traefik v2.1.6 ,以下是一些配置的总结,初次接触,大佬勿喷. 我的系统环境是 Ubuntu 18.04.3 LTS ...

  3. docker和docker compose安装使用、入门进阶案例

    一.前言 现在可谓是容器化的时代,云原生的袭来,导致go的崛起,作为一名java开发,现在慌得一批.作为知识储备,小编也是一直学关于docker的东西,还有一些持续继承jenkins. 提到docke ...

  4. 一文掌握Docker Compose

    目录 Docker Compose介绍 Docker Compose安装 Docker Compose基本示例 1.基本文件及目录设置 2.创建一个Dockerfile 3.通过docker-comp ...

  5. 使用docker compose编排容器

    一.安装docker compose 二进制包安装 1.安装 Docker Compose 从 官方 GitHub Release 处直接下载编译好的二进制文件即可 # curl -L https:/ ...

  6. Docker:Docker Compose 详解

    Docker Compose 概述与安装? 前面我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build.docker run 等命令操作容器.然而微服务架 ...

  7. Docker小白到实战之Docker Compose在手,一键足矣

    前言 Docker可以将应用程序及环境很方便的以容器的形式启动,但当应用程序依赖的服务比较多,或是遇到一个大系统拆分的服务很多时,如果还一个一个的根据镜像启动容器,那就有点累人了,到这有很多小伙伴会说 ...

  8. Docker Compose 介绍安装

    Compose介绍 Compose是一个定义和管理多容器的工具,也是一种容器编排工具,前身是Pig,使用Python语言编写.使用Compose配置文件描述多个容器应用的架构,biubiu使用什么镜像 ...

  9. Docker Compose安装以及入门

    Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速在集群中部署分布式应用. Compose 简介 Compose 项目是 Docker 官方的开源 ...

随机推荐

  1. 为什么ado,biz层得先写个接口,然后再实现?

    为什么ado,biz层得先写个接口,然后再实现?在我写的那个案例中不定义接口也可以 在实际开发中,一个项目肯定不是一个人完成的,这时需要项目经理的角色统一定义接口,负责不同功能模块的开发人员只需实现相 ...

  2. javascript的比较运算符

    JavaScript一共提供了8个比较运算符: > 大于运算符 < 小于运算符 <= 小于等于运算符 >= 大于等于运算符 == 相等运算符 === 严格相等运算符 != 不相 ...

  3. HTTP1.0和HTTP1.1和HTTP2.0的区别

    1 HTTP1.0和HTTP1.1的区别1.1 长连接(Persistent Connection)       HTTP1.1支持长连接和请求的流水线处理,在一个TCP连接上可以传送多个HTTP请求 ...

  4. glusterfs架构和原理

    分布式存储已经研究很多年,但直到近年来,伴随着谷歌.亚马逊和阿里等互联网公司云计算和大数据应用的兴起,它才大规模应用到工程实践中.如谷歌的分布式文件系统GFS.分布式表格系统google Bigtab ...

  5. 树莓派系统安装(ubuntu版本)无需屏幕

    0.前提 所需物品:一个手机.一台电脑.一个树莓派.一张tf卡和一个读卡器.所需软件:Win32DiskImager.putty还需要ubuntu系统镜像源.这些我都放在百度网盘上了链接:https: ...

  6. Centos7 离线安装 KVM,并安装 Csr1000v

    最近需要在客户环境搭建 csr1000v,客户环境不能联网,同时使用 kvm 管理.所以需要离线安装 kvm,在利用 kvm 安装 csr100v ,中间遇到不少坑,现记录如下. 所有安装步骤是在 r ...

  7. 又快又好!巧用ChartJS打造你的实用折线图

    又快又好!巧用ChartJS打造你的实用折线图 最终效果 本示例利用官方示例改造而成,生成带图示的折线图,标出各折线的名称,可以筛选想要显示的折线. 要实现最终效果,我们要分三步走: 生成折线图: 生 ...

  8. 利用AudioContext来实现网易云音乐的鲸鱼音效

    一直觉得网易云音乐的用户体验是很不错的,很早就注意到了里面的鲸鱼音效,如下图,就是一个环形的跟着音乐节拍跳动的特效. gif动图可能效果不太理想,可以直接在手机上体验 身为前端凭着本能的好奇心和探索心 ...

  9. 用Canvas画一棵二叉树

    笔墨伺候 var canvas = document.getElementById('canvas'); var ctx = canvas.getContext('2d'); // 然后便可以挥毫泼墨 ...

  10. 前端网络安全——前端CSRF

    CSRF:Cross Site Request Forgy(跨站请求伪造) 用户打开另外一个网站,可以对本网站进行操作或攻击.容易产生传播蠕虫. CSRF攻击原理: 1.用户先登录A网站 2.A网站确 ...