image.png
自从两年前推出第一个测试版,有一件事Windows容器一直没有做,就是基于Windows环境,在Linux容器中,运行Linux程序集。这个所谓的“Linux子系统”,是一件必须要做的事。一年前微软确实发布了一个东西,但是奇怪的是,他并没有解决这个容器移植问题。
“Linux明显是一个安全的操作系统”,Hykes宣称,“它不需要我们在安全方面的帮助,但是,还有一些问题。当你假设任何东西都是一个容器的话,你可以把安全带到一个新的水平。你可以做很多假设,比如,你可以定制一些专门的补丁和配置,从而进一步强化系统。”
Hykes花了一些时间来证实他的观点,不过他实际上已经抓到了一些人的眼球。当容器化运行在一个本身也被包裹在其他宿主环境(比如另外一个Linux系统,或者一个第一代虚拟机)的空间中,所有的最严重的潜在安全风险都与宿主机和客户机的边界间通信有关。
“我不认为Docker需要对你的Linux子系统的安全性负责,”Hykes承认,“实际上,我们不认为任何一个公司需要为此全权负责。Linux太大了,也太重要了。所以,你依赖的使Linux本身安全的进程是开放的且社区驱动的,这一点非常非常重要。并且,在过去几年里,Linux社区也确实产出了许多好的成果。比起多躲在角落里做所有事,不如从第一天开始就加入到这些开放的进程中。
该公司的明确政策是,限制Kubernetes(或者其他任何人)对容器生态提的要求。这使得Docker公司不会失去任何一个和他们站在同一舞台上的合作伙伴,比如微软。
Gossman讲述了我们都知道的,为什么微软开发Windows容器(现称为Windows Server Containers)和Hyper-V容器的两个独立格式的故事。 前者以基于Linux的Docker容器共享Linux内核的方式共享Windows内核,而Hyper-V容器允许客户机操作系统通过虚拟机在不同的主机平台上运行客户机操作系统的应用程序。 因此,对于Windows Server 2016,Microsoft为基于Windows的Hyper-V容器创建了一种隔离空间,可以最大限度地减少该虚拟机的占用资源。Gossman说,借助于LinuxKit,这种隔离方案正在扩展到基于Linux的容器中。
Gossman的演示已经充分证明理论上开发者可以在Windows上,用Windows的工具进行开发、编译、集成,然后在一个装载Hyper-V的隔离空间里的Linux容器镜像中运行Linux程序。他的演示程序包括一个嵌入在linux容器中的BusyBox镜像,并且Gossman证明了他可以在他的笔记本上运行并激活这个Linux内核。这也同样证明了任何Linux,大到企业级的Linux,小到最小化的CoreOS都可以作为程序运行的宿主机。当然,在听众中一定有不少人可能计划过用SELinux作为隔离空间的内核。
“你的平台安全性取决于它安全性最弱的组件,”Docker公司的Hykes说,这样使得Docker将所有关于安全性责任的争论转移到Linux头上。“你必须单独考虑每一层,”他继续说,“Docker有许多组件,我们一直很担心它们存在的所有安全问题,以及组件与安全性之间如何相互配合。”
Hykes在他的主题演讲中表示,Docker的整个演进过程都是“投诉驱动的”。开发人员抱怨,工程师组装和修正,平台得到改进。开发人员两年前确实有过大声抱怨。如果历史证明Hykes是正确的,我们需要铭记Docker公司是如何回应这个抱怨的。