2016 年 2 月 6 日,Docker 1.10 上线,其中一个变化是 Docker1.10 取消了对 LXC 的支持。看似不起眼的变化,实为布局已久的较量,这背后有什么原因呢?
我们说过,容器概念早在 Linux 内核里就有,并非 Docker 独家专利。Docker 在 2013 年初出茅庐时,作为商业化的容器产品,本身也是基于 linux 内核的特性。但不难发现,Docker 一路走来,在发展战略上一直野心勃勃,要建立自己的生态系统,LXC 出局就是一个最好的例子。
2013,Docker 问世,彼时,LXC 是它的底层基石。在 Docker 0.9 的时候,Docker 见异思迁了,引入了基于 Go 构建的 libcontainer 的 execution driver. 有了 libcontainer 这个项目, Docker 不再需要依赖于 Linux 部件 ( LXC, libvirt, systemd-nspawn… ) 就可以处理 namespaces, control groups, capabilities, apparmor profiles, network interfaces. 这下,LXC 沦为可选项(下图所示),开始 stand by 了。
Docker 的 CTO, Solomon Hykes, 在 2014 年 DockerCon 正式宣布 Libcontainer 项目,得到了来自各大 IT 公司包括 Google, parallels (openvz), redhat, ubuntu 的支持和贡献,这下大大提升了产品稳定性和兼容性,也预示了 LXC 后来的命运。
在 Docker 1.8 中 LXC 被 deprecated,现在 Docker 1.10,LXC 彻底出局。Docker 推出 libcontainer 自己集成了 linux 内核中的很多特性,作为一个独特、稳定且不受制于 Linux 的 library,独立的时代终于到来了。
不难看出,在 Docker、容器流行之后,Docker 自己在思考一个更为重要的问题 —— 如何让 Docker 朝着容器封装、运行的标准化更进一步?如何在兼容、共荣的同时还能掌握更多的话语权?这些问题在容器生态圈这个群狼共舞的竞技场里意义深远。那么,这个竞技场里的其他玩家呢?他们又在做什么呢?我们下回再分解。
本文转载自才云 Caicloud 公众号。
原文链接:https://mp.weixin.qq.com/s/Ti1G9ubl-K_Xzl5mkB4TLQ
评论