容器技术是操作系统层面的一种虚拟化技术。在Linux系统下,容器能够利用Namespaces、AppArmor、SELinux配置、Chroot以及CGroups等内核功能,交付一套类似于虚拟机的隔离性环境。经过不断的发展,容器技术所带来的轻量级、隔离性、标准化以及可大规模部署的特性促生了微服务和云原生应用的普及和发展。 Docker容器 毫无疑问,Docker是目前最具人气且应用最为广泛的容器技术。为什么呢?作者总结了以下主要的两个原因。 1、和早期容器技术不同,Docker不只是针对了应用对主机资源的共享和隔离,它更加关注应用的微服务化,大规模部署和管理自动化。微服务和云原生应用的发展极大的提高了Docker技术的大众接受程度。 Docker所采用的分层镜像模型让Docker对应用环境的封装更加轻量级和标准化,让镜像更加容易的共享和分发,极大的简化了大规模部署和运维的难度。 Docker镜像模型的Copyon Write机制和Volume机制合理的满足和促进了应用的无状态化和微服务化。 Docker提倡一个应用(进程)一个容器,符合微服务的理念。 2、Docker不只是一个工具包,围绕它的是一整套生态系统。包括镜像库、容器管理调度、网络、存储、安全。这一整套生态系统让应用采用容器技术进行大规模的封装,部署,运维,管理成为可能。 容器的特性如何在生产环境中发挥所长,还需要其生态圈中一系列的工具、产品和方案作以支撑。以下我们会对Docker以及它代表的容器技术生态系统做进一步的介绍。 容器生态圈 下图中的内容就是容器生态圈中的各个组件,我们将会从下至上逐一分层解析。 1、容器OS 容器OS并不是运行容器的必要条件,容器也可以运行在通用Linux中。大部分的容器OS即为Linux OS的精简版。相比大而全的Linux OS,容器OS如RancherOS、CoreOS、Redhat Atomic、Ubuntu Core、VMware Photon具有更加轻量,占有资源更少的特征,适合于更加标准化的数据中心和IOT的一些领域。同时,Microsoft也于2015年推出Windows Nano Server,并将其作为Windows2016的安装选项,其大小相比完整的Windows2016部署缩小了90%以上。 2、容器引擎 容器引擎负责容器应用的隔离和资源共享。它驱动和管理主机上所有的容器,并且包括了容器卷管理、容器网络管理、容器配置、镜像管理以及容器日志。容器生态圈中容器引擎主要有两个标准OCI和AppC,两个引擎Docker和RKT。 以下是一张对比表: 3、容器存储 容器中一般运行是无状态应用。对于有状态应用,应用的数据持久化就需要容器存储的支持。Docker为了支持第三方存储方案,在1.8版本引入Volume Plugin机制。Flocker作为Volume Plugin,需要和第三方外部存储结合使用为容器提供持久化存储,同时也屏蔽掉第三方存储系统的差异,类似Cinder在OpenStack中的位置。而Torus (项目已于2017年2月停止开发,“Developmenton Torus at CoreOS stopped as of Feb 2017”引用自Github Torus项目说明)和Comet(有容云)作为独立的分布式存储系统,可直接为容器提供完整的数据存储服务。 Comet存储系统作为国内少有的自主研发分布式系统,除了针对容器特性进行性能优化外,也提供了多级数据保护,应用感知等企业级存储特性。 4、容器网络 容器网络解决容器在大规模部署后的互联互通的问题。主要有Docker原生的CNM容器网络模型和CoreOS支持的CNI容器网络模型。除了Docker原生的Libnetwork网络方案,在容器网络生态圈中,有以下几种商业容器网络方案。
5、镜像仓库 镜像仓库提供了镜像的存储、及pull/push的服务。仓库分为公有仓库(如Docker Hub、Quay)和私有仓库(如AppHouse、Harbor)两种形式。最大的公有仓库是Docker Hub,即Docker官方的镜像仓库。由于网络访问限制的原因,或企业用户对数据安全性考虑的原因,也可以在企业私有数据中心建立私有镜像仓库,可通过部署AppHouse(有容云)或者Harbor来实现。 部署镜像仓库需要考虑的是镜像存储的安全性和系统的容错性。可分别通过搭建企业级存储系统或分布式存储系统来保障镜像数据的完整性,并选择具有高可用特性的镜像仓库进行实施和部署。 6、容器安全 容器缺少一个像虚拟机所拥有的安全边界。容器的快速迁移,升级和部署的特性也带来了新的安全隐患。容器安全可分为镜像安全和容器运行时安全。
Clair是CoreOS开源的容器镜像安全分析器,具有镜像安全扫描和提供修复建议的功能,目前也已有多个厂家将其集成在自身的容器平台中。 TwistLock在镜像扫描和容器运行时都有防护方案。Aqua的CSP在2017年2月也发布了2.0版本,官方表示将和Kubernetes会有更好的结合。 AppSafe是国内容器厂家有容云推出的容器安全产品,针对容器进行智能安全策略配置,并可根据配置策略进行实时防护。 7、容器编排 容器平台是容器应用大规模部署,升级和运维的管理平台。容器的编排和资源调度是容器平台的核心功能。容器平台也提供服务发现、运行监控、扩容缩容、负载均衡、灰度升级、故障冗余等功能。
8、运维 容器平台运行和管理着成千上万的容器及应用。如何能从资源(主机、容器)纬度和应用的纬度来及时监控和日志收集,也成为容器进入生产环境绕不开的话题。目前容器的监控和日志方案分为开源方案和SaaS服务两种:
在以后的文章里我们会对容器调度和编排做重点的介绍,容器生态还有哪些组件和专注于某一领域的厂家、技术或产品,欢迎小伙伴们回复和讨论。 |
|