Docker compose概述

Docker compose用来管理多容器应用。首先需要创建一个yaml格式的定义文件,看起来大概是下边这个样子:

version: '3'
services:
  web:
    build: .
    ports:
    - "5000:5000"
    volumes:
    - .:/code
    - logvolume01:/var/log
    links:
    - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

关于如何编写compose文件,参考:https://docs.docker.com/compose/compose-file/

compose常用命令:

  • Start, stop, and rebuild services
  • View the status of running services
  • Stream the log output of running services
  • Run a one-off command on a service

特性

  • 单主机多套环境隔离
  • volume数据保持
  • 仅配置变更时重新创建容器
  • 多环境适配

单主机多套环境隔离

compose使用项目名称,能够在一台主机上隔离出多套环境,项目名称主要用在如下几个地方:

  • 在某台开发用主机上,可以创建同一种环境的多份拷贝。如在相同环境下跑同一项目的不同分支
  • 在持续集成服务中,通过项目名称为每次构建指定唯一标识。
  • 同共享主机中避免不同项目之间的影响

volume数据保持

在compose中的容器启动之前,首先查看这个容器是否已经运行过,如果有则将旧容器使用的volume中的数据复杂到新容器中并启动。这个特性我觉得很奇怪。如果前边的容器已经结束运行,如何确保它占用的资源可能已经被系统回收。如果某个容器有多个实例,那么又如何从旧volume往新volume复制数据呢?它们之间的对应关系如何呢?如果新运行的容器实例个数有变化,又如何复制数据呢?

仅配置变更时重新创建容器

这个特性也不太好理解,如果配置不变更的话,只是重新启动旧的停止运行的容器,因为里边保持了一些运行过程中产生的状态,不创建新容器不是非常应该的事情吗?为什么要特别提出来?

多环境适配

定义compose文件时,可以像预编译一样定义变量、条件,以适应不同的环境。

常用用例

开发环境

compose能够为开发隔离出一套独立的环境,并且能够管理一个应用中的多个服务及它们之间的依赖关系,也可以通过单独的命令控制其中的某个特定服务,相当于把整个环境一起打包。

自动化测试

在持续集成、持续测试中使用比较多。能够随时动态的创建一套测试环境,运行完测试用例后,可以立刻将环境销毁。如:

总结:compose似乎比较关注开发、测试环境

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值