容器生态系统

说起生态,不禁让人想起贾跃亭的乐视,想当初我多次被它的生态布局给震撼到,一度相信它将要超越百度,坐拥互联网三大江山的宝座,但没过时日,各种劲爆的新闻就把它推到了风口浪尖上,现在想想也是让人唏嘘,但不管怎么说,愿它好吧,毕竟这种敢想敢做的精神还是值得敬佩的。

回到技术这个领域,不得不说,技术更新迭代的速度快得让人应接不暇,就容器技术这个领域来说,从 Docker 面世短短的 2-3 年时间里,就衍生出多种与之相关的技术框架,由此形成了一个小小的生态系统。

一谈到容器,大家都会想到 Docker,本文也主要从 Docker 角度来讲容器生态系统。

容器基础技术

Docker 的本质是利用 Linux 内核的 namespace 和 cgroups 机制,构建出一个隔离的进程(容器进程)。所以,容器的基础技术主要涉及到 Linux 内核的 namespace 和 cgroups 技术。

容器核心技术

容器核心技术保证容器能够在主机上运行起来,包括容器规范、容器 runtime、容器管理工具、容器定义工具、Registry 和容器 OS。

容器规范旨在将多种容器(如 OpenVZ,rkt,Docker 等)融合在一起,解决各种兼容问题,为此还专门成立了一个叫 OCI(Open Container Initiative)的组织来专门制定相关的容器规范。

容器 runtime 是容器真正运行的地方,一般需要依赖内核,也有运行在专门制定的容器 OS 上,关于容器 OS,下面会做介绍。lxc 、runc 和 rkt 是目前三种主流的 runtime。

lxc 是 Linux 上老牌的容器 runtime。Docker 最初也是用 lxc 作为 runtime。runc 是 Docker 自己开发的容器 runtime,符合 oci 规范,也是现在 Docker 的默认 runtime。rkt 是 CoreOS 开发的容器 runtime,符合 oci 规范,因而能够运行 Docker 的容器。

容器管理工具是对外提供给用户的 CLI 接口,方便用户管理容器,对内与 runtime 交互。对应于不同的 runtime,分别有三种不同的管理工具:lxd、docker engine 和 rkt cli。

容器定义工具允许用户定义容器的内容和属性,如容器需要什么镜像,装载什么应用等。常用有三种工具:docker image、Dockerfile 和 ACL(App Container Image)。

docker image 是容器镜像,runtime 依据 docker image 创建容器。dockerfile 是包含若干命令的文本文件,可以通过这些命令创建出 docker image。ACI 与 docker image 类似,只不过它是由 CoreOS 开发的 rkt 容器的 image 格式。

Registry 是存放容器镜像的仓库,包括 Docker Registry、Docker Hub 和 Quay.io,以及国内的 DaoCloud.io。企业可以用 Docker Registry 构建私有的 Registry。

容器 OS 不同于 runtime,是专门制定出来运行容器的操作系统,与常规 OS 相比,容器 OS 通常体积更小,启动更快。因为是为容器定制的 OS,通常它们运行容器的效率会更高。目前已经存在不少容器 OS,CoreOS、atomic 和 ubuntu core 是其中的杰出代表。

容器平台技术

随着容器部署的增多,容器也逐步过渡到容器云,容器平台技术就是让容器作为集群在分布式的环境中运行,包括了容器编排引擎、容器管理平台和基于容器的 PaaS。

容器编排引擎就是管理、调度容器在集群中运行,以保障资源的合理利用。有名的三大编排引擎为 docker swarm、kubernetes 和 mesos。其中,kubernetes 这两年脱颖而出,成为其中的佼佼者。

容器管理平台是在编排引擎之上更为通用的一个平台,它抽象了编排引擎的底层实现细节,能够支持多种编排引擎,提供友好的接口给用户,极大方便了管理。Rancher 和 ContainerShip 是容器管理平台的典型代表。

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

容器支持技术

容器的出现又重新让一些古老的技术焕发第二春,如监控、网络、数据管理、日志等技术,由于容器技术的不同,需要制定相应的符合容器规范的技术框架,由此有了容器支持技术,用于支持容器提供更丰富能力的基础设施。

其中包括容器网络、服务发现、监控、数据管理、日志管理和安全性。

容器网络主要用于解决容器与容器之间,容器与其他实体之间的连通性和隔离性。包括 Docker 原生的网络解决方案 docker network,以及第三方的网络解决方案,如 flannel、weave 和 calico。

服务发现保证容器使用过程中资源动态变化的感知性,如当负载增加时,集群会自动创建新的容器;负载减小,多余的容器会被销毁。容器也会根据 host 的资源使用情况在不同 host 中迁移,容器的 IP 和端口也会随之发生变化。在这种动态环境下,就需要有一种机制来感知这种变化,服务发现就是做这样的工作。etcd、consul 和 zookeeper 是服务发现的典型解决方案。

监控室保证容器健康运行,且让用户实时了解应用运行状态的工具,除了 Docker 原生的监控工具 docker ps/top/stats 之外,也有第三方的监控方案,如 sysdig、cAdvisor/Heapster 和 Weave Scope 。

数据管理保证容器在不同的 host 之间迁移时数据的动态迁移。有名的方案是 Flocker。

日志管理为问题排查和事件管理提供了重要依据。docker logs 是 Docker 原生的日志工具。而 logspout 对日志提供了路由功能,它可以收集不同容器的日志并转发给其他工具进行后处理。

容器安全性保证容器的安全,不被攻击,OpenSCAP 能够对容器镜像进行扫描,发现潜在的漏洞。

PS:本文借鉴了知名云计算博主 CloudMan 的博文

http://www.cnblogs.com/CloudMan6/p/6706546.html,感谢 CloudMan 呈现这么好的内容。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

Docker究竟是什么,为什么这么流行,它的优点和缺陷有哪些?

Docker是什么? 简单得来说,Docker是一个由GO语言写的程序运行的“容器”(Linux containers, LXCs); 目前云服务的基石是操作...

7238
来自专栏黑泽君的专栏

ubuntu16.04在英文状态下安装中文语言包的过程(法二:命令行的方式)

VPS(Virtual Private Server 虚拟专用服务器)技术,将一部服务器分割成多个虚拟专享服务器的优质服务。实现VPS的技术分为容器技术和虚拟...

3861
来自专栏程序人生 阅读快乐

Docker全攻略

Docker 是一个充满挑战性和趣味性的开源项目,它彻底释放了Linux 虚拟化的威力,极大地缓解了云计算资源供应紧张的局面。与此同时,Docker 也成倍地降...

871
来自专栏aCloudDeveloper

容器生态系统

说起生态,不禁让人想起贾跃亭的乐视,想当初我多次被它的生态布局给震撼到,一度相信它将要超越百度,坐拥互联网三大江山的宝座,但没过时日,各种劲爆的新闻就把它推到了...

1450
来自专栏编程坑太多

『中级篇』Docker-cloud介绍(54)

PS:以上这个图就是以后咱们通过docker需要实现的流程,也是目前很多大型互联网公司的流程。重要信息:Docker云集群和应用管理服务将会在五月廿一日关闭。用...

822
来自专栏云计算D1net

容器技术适合你的企业吗?

容器技术,比如Docker,正在云供应商和企业间越来越流行。但是对于企业而言,容器技术是不是正确的选择呢? 容器技术正在强有力地占领云市场,随着供应商继续深入拥...

3466
来自专栏云计算D1net

前方高能!保护Docker容器须知

容器技术(尤其是Docker)正继续以其自有的方式在企业中发展着。它们与其他任何技术一样,IT专业人士们的任务就是为确保Docker容器的安全性而制定出一份策略...

3133
来自专栏角落的白板报

[52ABP]Docker&Ubuntu从入门到实战开课啦~

“ 任何的课程都逃不开理论的支持 & 课程还在录制中,请关注公众号获取最新消息~” 任何的课程都逃不开理论的支持 久等了各位,在Asp.NET Core2.0...

3526
来自专栏腾讯云容器服务团队的专栏

腾讯云容器服务TKE(原CCS),为用户提供 Kubernetes1.10 服务

腾讯云容器服务是首批通过Kubernetes一次性认证的服务商,本次腾讯云容器服务再次支持kubernetes 1.10,并再次通过Kubernetes一次性认...

5647
来自专栏云计算D1net

Rocket 希望以硬件隔离引领容器市场,Docker说“NO!”

下一代CoreOS的容器使用基于Intel的硬件隔离来增加安全性。其他容器系统也会如法炮制吗? 编者注:CoreOS是一个基于Linux 内核的轻量级操作系统,...

3055

扫码关注云+社区