谈起容器技术,不得不提Docker技术。
Docker 是 PaaS 提供商 DotCloud 开源的一个高级容器引擎,源代码托管在 Github 上,基于Go语言并遵从Apache2.0协议开源。Docker相当于物理行业的集装箱对物流的影响一样,成为Container上运行镜象的统一打包和交换的标准。
我们知道,Docker使用了容器的环境隔离和资源限制技术,把镜像和运行环境打包到Image中。Register支持容器上传和下载功能。
Docker同时提供了Build,Ship和Run,运维只需要在环境重配置好Docker,剩下的工作就是部署容器,实现Build Once Run Anywhere和Configure Once Run Anything;从而促进了容器技术的爆发。
在架构上,Docker采用Client Server模式和插件式架构设计,Docker的后端采用非常松耦合的架构,模块之间相互独立,用户通过Docker Client与Docker Daemon建立通信,并发送请求给Docker Daemon。
Docker Daemon提供Server功能接受Docker Client的请求;随后通过Engine执行Docker内部的一系列工作,每项工作都是以一个Job的形式的存在。
Docker讲底层容器运行时剥离出来,实现更好的平台无关性。LibContainer是对各种容器的抽象,发展为RunC,并贡献给OCP组织作为定义容器环境的标准。Docker容器的三大编排工具,Compose、Swarm和Machine。Compose是服务编排工具,是定义和运行Docker主机上多容器应用的工具,通过单独文件,定义多容器应用并运行容器。
Docker的网络技术和能力一直是容器技术中最难、也是最不看好的技术之一,Libnetwork是Docker公司正在开发的新的网络底层架构,由libcontainer和Docker Engine中的网络相关的代码合并而成。Libnetwork的目标是引入了容器网络模型(CNM),并为应用程序提供一致的编程API接口以及网络抽象。 Libnetwork的容器网络模型包含了三个重要概念,Network Sandbox,Endpoint和Network。
Weave创建了Networking Plugin技术,目前成熟的有Networking Plugin和Volume Plugin。
Weave方案包含两大组件,用户态Shell脚本和Weave虚拟路由容器。Weave虚拟路由容器需要在每个宿主机上布置第三方插件,把不同宿主机的Route容器连接起来,使得Docker工具生态无缝集成到Docker。(其他网络方案介绍,请参看<容器技术架构、网络和生态详解>电子书)
Weave创建一个虚拟网络,链接多个主机的Docker容器,并使他们可以被自动发现,对使用该网络的应用来说,所以容器就像是链接在同一个网络交换机上,无需配置端口映射、链路等参数。
容器和容器OS
CoreOS是最为受欢迎的容器虚拟化OS,专为Docker设计和内核裁剪。 Core