容器生态系统包含核心技术、平台技术和支持技术三个方面。上一节我们讨论了核心技术,今天讨论另外两个部分。

容器平台技术

容器核心技术使得容器能够在单个 host 上运行。而容器平台技术能够让容器作为集群在分布式环境中运行。

容器平台技术包括容器编排引擎、容器管理平台和基于容器的 PaaS。

容器编排引擎

基于容器的应用一般会采用微服务架构。在这种架构下,应用被划分为不同的组件,并以服务的形式运行在各自的容器中,通过 API 对外提供服务。为了保证应用的高可用,每个组件都可能会运行多个相同的容器。这些容器会组成集群,集群中的容器会根据业务需要被动态地创建、迁移和销毁。

大家可以看到,这样一个基于微服务架构的应用系统实际上是一个动态的可伸缩的系统。这对我们的部署环境提出了新的要求,我们需要有一种高效的方法来管理容器集群。而这,就是容器编排引擎要干的工作。

所谓编排(orchestration),通常包括容器管理、调度、集群定义和服务发现等。通过容器编排引擎,容器被有机的组合成微服务应用,实现业务需求。

docker swarm 是 Docker 开发的容器编排引擎。

kubernetes 是 Google 领导开发的开源容器编排引擎,同时支持 Docker 和 CoreOS 容器。

mesos 是一个通用的集群资源调度平台,mesos 与 marathon 一起提供容器编排引擎功能。

以上三者是当前主流的容器编排引擎。

容器管理平台

容器管理平台是架构在容器编排引擎之上的一个更为通用的平台。通常容器管理平台能够支持多种编排引擎,抽象了编排引擎的底层实现细节,为用户提供更方便的功能,比如 application catalog 和一键应用部署等。

Rancher 和 ContainerShip 是容器管理平台的典型代表。

基于容器的 PaaS

基于容器的 PaaS 为微服务应用开发人员和公司提供了开发、部署和管理应用的平台,使用户不必关心底层基础设施而专注于应用的开发。

Deis、Flynn 和 Dokku 都是开源容器 PaaS 的代表。

容器支持技术

下面这些技术被用于支持基于容器的基础设施。

容器网络

容器的出现使网络拓扑变得更加动态和复杂。用户需要专门的解决方案来管理容器与容器,容器与其他实体之间的连通性和隔离性。

docker network 是 Docker 原生的网络解决方案。除此之外,我们还可以采用第三方开源解决方案,例如 flannel、weave 和 calico。不同的方案设计和实现方式不同,各有优势和特定,我们可以根据实际需要来选型。

服务发现

动态变化是微服务应用的一大特点。当负载增加时,集群会自动创建新的容器;负载减小,多余的容器会被销毁。容器也会根据 host 的资源使用情况在不同 host 中迁移,容器的 IP 和端口也会随之发生变化。

在这种动态的环境下,必须要有一种机制让 client 能够知道如何访问容器提供的服务。这就是服务发现技术要完成的工作。

服务发现会保存容器集群中所有微服务最新的信息,比如 IP 和端口,并对外提供 API,提供服务查询功能。

etcd、consul 和 zookeeper 是服务发现的典型解决方案。

监控

监控对于基础架构非常重要,而容器的动态特征对监控提出更多挑战。

针对容器环境,已经涌现出很多监控工具和方案。

docker ps/top/stats 是 Docker 原生的命令行监控工具。除了命令行,Docker 也提供了 stats API,用户可以通过 HTTP 请求获取容器的状态信息。

sysdig、cAdvisor/Heapster 和 Weave Scope 是其他开源的容器监控方案。

数据管理

容器经常会在不同的 host 之间迁移,如何保证持久化数据也能够动态迁移,是 Flocker 这类数据管理工具提供的能力。

日志管理

日志为问题排查和事件管理提供了重要依据。

docker logs 是 Docker 原生的日志工具。而 logspout 对日志提供了路由功能,它可以收集不同容器的日志并转发给其他工具进行后处理。

安全性

对于年轻的容器,安全性一直是业界争论的焦点。

OpenSCAP 能够对容器镜像进行扫描,发现潜在的漏洞。

本教程覆盖的知识范围

前面我们已经鸟瞰了整个容器生态系统,对容器所涉及的技术体系有了全面的认识。那我们这本教程会讨论其中的哪些内容呢?

会覆盖容器生态系统 91.6% 的技术!具体请参考第一篇中的 “覆盖内容”部分,这里就不再赘述了。

下一节开始实战,运行我们的第一个容器。

容器生态系统 (续) - 每天5分钟玩转容器技术(3)相关推荐

  1. 转 容器生态系统 (续) - 每天5分钟玩转容器技术(3)

    每天5分钟玩转容器技术(3) http://www.cnblogs.com/CloudMan6/p/6718464.html 叫板OpenStack:用Docker实现私有云 http://www.c ...

  2. 每天5分钟玩转容器技术 ---- 系列文章

    通过 Service 访问 Pod - 每天5分钟玩转 Docker 容器技术(136) 定时执行 Job - 每天5分钟玩转 Docker 容器技术(135) 并行执行 Job - 每天5分钟玩转 ...

  3. 【视频】运行第一个容器 - 每天5分钟玩转容器技术(5)

    [视频]运行第一个容器 - 每天5分钟玩转容器技术(5) CloudMan 2017-04-21 第5篇 [视频]运行第一个容器 这两天制作的视频,安装 Docker 并运行第一个容器,希望对大家有帮 ...

  4. 容器生态系统 - 每天5分钟玩转容器技术(2)

    对于像容器这类平台级别的技术,通常涉及的知识范围会很广,相关的软件,解决方案也会很多,初学者往往容易迷失. 那怎么办呢? 我们可以从生活经验中寻找答案. 当我们去陌生城市旅游想了解一下这个城市一般我们 ...

  5. base 镜像 - 每天5分钟玩转容器技术(10)

    2019独角兽企业重金招聘Python工程师标准>>> 上一节我们介绍了最小的 Docker 镜像,本节讨论 base 镜像. base 镜像有两层含义: 不依赖其他镜像,从 scr ...

  6. Dockerfile 构建镜像 - 每天5分钟玩转容器技术(13)

    Dockerfile 是一个文本文件,记录了镜像构建的所有步骤. 第一个 Dockerfile 用 Dockerfile 创建上节的 ubuntu-with-vi,其内容则为: 下面我们运行 dock ...

  7. 第 1 章 容器生态系统 - 003 - 容器生态系统 (续)

    容器平台技术 容器平台技术能够让容器作为集群在分布式环境中运行. 容器编排引擎 基于容器的应用一般会采用微服务架构.在这种架构下,应用被划分为不同的组件,并以服务的形式运行在各自的容器中,通过 API ...

  8. 镜像的分层结构 - 每天5分钟玩转容器技术(11)

    Docker 支持通过扩展现有镜像,创建新的镜像. 实际上,Docker Hub 中 99% 的镜像都是通过在 base 镜像中安装和配置需要的软件构建出来的.比如我们现在构建一个新的镜像,Docke ...

  9. 一张图搞懂容器所有操作 - 每天5分钟玩转 Docker 容器技术(26)

    前面我们已经讨论了容器的各种操作,对容器的生命周期有了大致的理解,下面这张状态机很好地总结了容器各种状态之间是如何转换的. 如果掌握了前面的知识,要看懂这张图应该不难.不过有两点还是需要补充一下: 可 ...

最新文章

  1. 真惨!连各大编程语言都摆起地摊了!
  2. 一文看懂5G芯片背后的明争暗斗
  3. 博士申请 | 香港理工大学滕龙老师课题组招收机器人方向博士生/研究助理
  4. jumpserver 重启mysql_jumpserver 常见错误解决
  5. 如何在一个元素上有多个CSS过渡?
  6. 数据结构笔记(二十三)--哈夫曼树
  7. CSS Repeater - 交错显示行背景色 table行鼠标进入事件特效 禁止文本换行
  8. SecureCRT/FX的破解软件注册机被系统自动删除解决办法
  9. Extjs实现角色权限流控制,对fieldset,checkbox的动态控制
  10. Live Streaming
  11. 五万字,快速读完《图解TCP/IP》核心内容!!!(建议收藏)
  12. RocketMQ 内存优化
  13. mysql 1449 问题
  14. 机器学习:考试预测实战(特征隐射,独热编码,特征重要性选择,网格搜索调参)
  15. selenium爬取网页表格数据并存到Excel
  16. 区块链100讲:梅克尔树保障区块链数据不可篡改,想换根就要砍树!
  17. 小猫爬山(DFS+剪枝)
  18. Java知识点串讲之面向对象简述
  19. 实测百度如流:精致又豪横! AI协同办公应有的样貌
  20. 【C++】用递归函数实现Hermite多项式求值

热门文章

  1. 【php】命名空间的影响
  2. 《廖雪峰 . Git 教程》学习总结
  3. UML建模之业务处理模型(Business Process Model,BPM)
  4. 与江岭师弟的讨论 - 关于形式化逻辑的局限以及其它
  5. 微软计划2008年初发布Windows Server2008
  6. 数说真相|46公里内,Uber更划算
  7. 为什么产品经理面试都喜欢问注册问题?
  8. java程序打包成exe安装包总结
  9. MySQL中间件之ProxySQL(11):链式规则( flagIN 和 flagOUT )
  10. json的键为变量而不是字符串时,怎么写?