微软容器未来的安全版本
微软继续提供对基于windows的Docker环境开发,这周四发布的windows server 2016 RC4介绍了一种新型的windows Docker容器,安全机制通过公司内部虚拟机Hyper-VM实现。
Hyper-V容器使用与运行在windows上Docker容器同样的image(公司今年早些时候介绍过 http://thenewstack.io/docker-f ... -way/ )— 但是Hyper-V通过虚拟机方式提供了更好的隔离性。
尽管微软一年前就宣布了Hyper-V容器的想法,“这是第一次真正发布”,Taylor Brown(微软编程管理高级领导)说。
Hyper-V容器可以使用与传统windows容器一样的命令来控制,可以通过添加一个隔离开关,即可使用与传统windows容器同样的命令来操作Hyper-V容器。
Patrick Chanzan(Docker技术开发团队成员)指出,目前,所有Docker Compose命令在不同平台上都可以工作,而且基于windows的Swarm原型也在测试中。
那么性能如何呢?毕竟,容器比传统虚拟机更有价值的地方在于它可以自我创建。
实际上,Brown承认,Hyper-V容器会比传统容器创建式多耗费几秒钟,而且,Hyper-V容器会占用更多内存,因此一台服务器可能允许少量的Hyper-V容器。
但是这确是更好安全性带来的代价。设计上,Hyper-V容器提供了更小的可攻击界面(attack surface),例如,如果在Windows内核中发现了一个漏洞,恶意用户并不能突破Hyper-V容器来利用宿主机上的漏洞。
“他们可以达到最坏的影响在于本虚拟机弄瘫,但不会突破容器的边界”,Brown说。
Brown说,跨平台编译基于linux的Dokcer(用Go语言编写)到windows平台牵涉到包括微软,Docker和第三方贡献者之间的多方合作。
实际上,过去的几年中,微软也成为Docker最大的贡献者之一。根据Docker的资料,去年319个pull请求者中,微软在代码贡献上排名第五。
要记住Windows容器提供windows内核调用,而不是linux内核调用。和linux docker容器一样,windows容器也共享主机内核,只不过是windows内核罢了。
“当使用Windows容器是,感觉就是一个windows环境,实际就是windows环境”,Arnaud Porterie(Docker工程师)在本周巴塞罗那召开的Dockercon EU大会上说。
有一点不同,linux Dokcer容器在宿主机只会发起一个进程;而windows容器却会发起好几个。而对于Hyper-V容器却不是这样的,因为在hypervisor中有轻量内核,而不是共享宿主机的内核。因此,“从容器角度来看就是一个容器,但是在宿主机上却看不到进程”,Starks说。
另外,linux调用依靠很多共享库,例如libc。相反的,windows依赖动态链接库(DLLs),他们结合起来提供服务,因此每个windows容器都会在宿主机上启动多个进程,而不是一个。
因此基于linux的docker容器不会原生的运行在windows容器中,反之亦然。但是他们都可以被同一个docker管理软件控制,允许开发者将windows和linux平台下最好的经验整合到一个应用中,Brown说。
一个完全隔离的容器可以同时给企业级用户使用而他们可能有使用不同安全和行业定制应用的教训和考虑。
微软Azue本身就使用了安全容器来提供更有效的多宿主服务,例如Azure Machine Learning (ML) Service.
“我们可以以比使用虚拟机更高的密度完全将用户的脚本隔离开”,Brown说。
Hyper-V容器技术将会随着windows server 2016发布,可能是明年的某个时候。到时候windows server 2016完全版和裁剪过的Nano版都会运行在容器内部。
一旦升级了微软的hypervisor,Hper-V容器也被微软Azure容器服务支持。