去年我们听到来自用户的一个最多的请求是将Docker原生的体验带到他们的平台上。这些平台数量众多且各有不同,从云平台如AWS、Azure和Google Cloud,到服务器平台如Windows Server,到开发者使用的桌面平台如OSX和Windows 10,再到大型主机和物联网平台,诸如此类的例子还有很多。
于是我们开始了对这些平台支持的工作,我们起初发布了Docker for Mac和Docker for Windows,接着我们发布了Docker for AWS和Docker for Azure。我们最近又发布了Docker for GCP的Beta版本。我们在每一个平台上做的使Docker原生化的定制,都推动了相关Docker版本的采用。
我们遇到的一个问题是这些平台的很多用户想要有Linuxcontainer的支持,但是这些平台自身却不带有Linux。MacOS和Windows是两个很明显的例子。平台也有可能包含了一个不标准的Linux。所以为了要(让Linuxcontainer)在这些平台上运行,在Docker平台中捆绑Linux是一个合理的做法。
我们需要打包的是一个安全、精简和可移植的Linux子系统,它能提供Linux容器的功能,并能作为容器平台的一个组件。我们也发现,这也正是很多其他和容器打交道的人想要的功能:他们想有一个安全、精简和可移植的Linux子系统以便于容器的移动。所以在构建这个组件过程中,我们与几个公司以及Linux基金会进行了合作。这些公司包括HPE、Intel、ARM、IBM和Microsoft,它们都有兴趣将Linux容器的功能带到新的不同平台中,从物联网到大型主机。
LinuxKit包含的工具集能允许构建自定义的只包含运行时平台必需组件的Linux子系统。所有的系统服务都是可以被替换的容器,它们中一切不必要的都可以被移除。所有的组件都可以被满足(相同)特定需求的组件替换。它是一个工具集,与Docker的“自带电池但允许更换”的哲学很像。今天在Dockercon 2017的舞台上,我们开源了LinuxKit,地址在http://github.com/linuxkit/linuxkit。
为了达到构建一个安全、精简和可移植的操作系统的目标,我们采取了“一切使用容器构建,一切为了运行容器”的构建方法。安全是最高的目标,符合国家标准与技术协会(NIST)在“应用容器安全指南”草案中陈述的:“使用容器特定的操作系统而不是一个用途广泛的操作系统来减少攻击面。当使用一个容器特定的操作系统时,攻击面通常比用一个用途广泛的操作系统的攻击面要小很多,因此容器特定操作系统受到攻击以及被攻陷的几率都要小”。
如果操作系统是围绕着容器设计的,通过移除不需要的部分,精简化直接有助于提升安全性。因为LinuxKit是容器原生的,它有着极小的体积 - 35MB,而且启动时间也极短。所有的系统服务都是容器,意味着一切都可以移除和替换。
系统服务都在容器中被沙箱隔离,只拥有它们所必需的特权。配置是针对容器使用场景而设计的。整个系统是构建来用作一个不可变的基础设施,因此它可以通过持续集成的流水线来构建和测试、部署或者在你希望升级时重新部署新版本。
内核来自于和Linux内核社区的协作。我们参与了相关小组如KSPP(内核自我保护项目)的流程和工作,并发布了一些最新的一些内核,只包含最少的与LinuxKit支持平台相关问题的补丁。内核安全的流程太大,任何一个公司要独自开发太难,因此有必要进行行业协作。
另外,LinuxKit提供了一个空间来孵化有望提升Linux安全性的项目。我们正在和外部的项目合作,如Wireguard、Landlock、Mirage、oKernel、ClearContainer和更多的其他项目,并且集中关注容器的领域的创新,以及通往生产的途径。
LinuxKit是可移植的,正如它是为很多目前运行着Docker的平台打造的一样,同时它有要在更多的平台上运行的眼光,随着容器深入到计算的各个领域,不论它们是或大或小的机器,物理裸机或者是虚拟机,大型主机或者用于物联网场景的设备。
在发布的时候,我们邀请了微软的John Gossman到舞台,我们和Microsoft有长的合作历史,从Docker for Windows Server、Docker for Windows到Docker for Azure。合作的一部分内容是Docker for Windows和Docker for Azure中的Linux子系统,以及在这些平台上Hyper-V和LinuxKit的整合。今天我们公布的下一步合作内容是所有的Windows Server和Windows 10客户都将能使用Linux容器,并且我们正在一起努力将 LinuxKit和Hyper-v隔离进行整合。
今天我们将LinuxKit开放给合作伙伴和开源的爱好者,希望能推动使用Linux构建新的伟大,促进容器平台的扩展。我们也期待你能从中受益,并最终回馈社区。