1.容器的核心技术:
(1)容器规范:由docker、coreos、google在内的若干公司共同成立了的OCI的组织,发布了runtime spec和image format spec两个规范,使得不同组织和厂商开发的容器能够在不同的runtime上运行,这样就保证了容器的可移植性和互操作性。
(2)容器runtime:runtime是容器真正运行的地方。runtime需要跟操作系统的内核紧密合作,为容器提供运行环境,容器只有在runtime中才可以运行。lxc、runc和rkt是目前主流的三种容器runtime,现在docker默认的是runc
(3)容器管理技术:用户通过工具来管理容器。容器管理工具对内与runtime交互,对外为用户提供接口。lxd是lxc对应的管理工具,runc的管理工具是docker engine。docker engine包含后台的deamon和cli两个部分。一般提到的docker,指的就是docker engine
(4)容器定义工具:容器定义工具允许用户定义容器的内容和属性,这样容器能够被保存、共享和重建
(5)registry:容器是通过image创建的,需要有一个仓库存放他们
(6)容器OS:容器OS是专门运行容器的操作系统,与常规系统想必,OS体积更小,启动更快,内核使用host的内核
2.容器平台技术
(1)容器编排引擎:通常包括容器管理、调度、集群定义和服务发现等。通过容器编排引擎,容器被有机地组合成微服务应用,实现业务需求。例如k8s
(2)容器管理平台:容器管理平台是架构在容器编排引擎之上的一个更为通用的平台。通常容器管理平台能够支持多种编排引擎,抽象了编排引擎的底层实现细节,为用户提供更方便的功能,如一键部署应用等。rancher和containership是容器管理平台的典型代表
(3)基于容器的PAAS:基于容器的PaaS:基于容器的PaaS为微服务应用开发人员和公司提供了开发、部署和管理应用的平台,使用户不必关心底层基础设施而专注于应用的开发。deis、flynn和dokku都是开源容器paas的代表
3.容器支持技术
(1)容器网络:docker network是docker原生的网络解决方案。还可以才用第三方开源解决方案,例如flannel、weave和calico。不同方案的设计和实现方法各不相同,各有优势和特点,根据实际需求来选型
(2)服务发现:服务发现会保存容器集群中所有微服务最新的信息,比如IP和端口,并对外提供API,提供服务查询功能。etc、consul和zookeeper是服务发现的典型解决方案。
(3)监控:监控对于基础架构非常重要。针对容器环境,涌现出很多监控方案和工具。docker ps/top/stats是docker原生的命令行监控工具,除了命令行,docker也提供了stats API,用户可以通过HTTP请求获取容器的动态信息。sysdig、cAdvisor/Heapster和Weave Scope是其他开源的容器解决方案
(4)数据管理:容器经常会在不同之间的host之间进行迁移,如何保证持久化数据也能够动态迁移,是REX-RAY这类数据管理工具提供的能力
(5)日志管理:日志工具有两类,docker logs是docker原生的日志工具。而logspout对日志提供了路由功能,可以收集不同容器的日志并转发给其他工具进行后处理
(6)安全性:openscap是一种容器安全工具,opensacp能够对容器镜像进行扫描,发现潜在的漏洞