暗中的競技場 - Docker 1.10,為什么LXC出局?
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朝著容器封裝、運行的標準化更進一步?如何在兼容、共榮的同時還能掌握更多的話語權?這些問題在容器生態圈這個群狼共舞的競技場里意義深遠。那么,這個競技場里的其他玩家呢?他們又在做什么呢?我們下回再分解。
來自: http://dockone.io/article/1076