在奥斯汀举办的dockercon17上,docker公司的cto solomon宣布了一个新的开源项目linuxkit 。我们从几个方面出发研究下到底什么是linuxkit。

linuxkit可以构建一个非常轻量裁剪版的操作系统,最小只有35m,所有的系统服务都是基于容器。实际上linuxkit就是基于alpine发行版之上。(linuxkit's roots are in alpine. a stronger alpine is a stronger linuxkit. we'll continue to invest in alpine.)
linuxkit的几个安全设计原则:
使用现代安全配置的内核
最小化base
类型安全的系统daemon。会借助原先的 mirageos项目来构建unikernels。
安全镜像构建链条。通过tup、签名方式的镜像来保证镜像构建过程的不可变和可信。
不可变架构。使用一个只读文件系统。
使用外部可信的资源创建。依赖infrakit来更新linuxkit的节点
孵化更多的安全项目,如wireguard和okernel
支持桌面、服务器、iot和大型机
支持intel和arm
支持裸金属和虚拟化。
借助linuxkit, 终于可以在windows上运行linux容器:
对于非linux平台但希望支持linux容器的场景,如mac os和windwos
打造一个更安全的操作系统,降低安全攻击平面。
针对特定的物理设备和需求,打造定制化的os。
linuxkit需要编写一个yaml文件,来配置所需要的服务。可选的配置包括
kernel:指定内核的docker镜像,镜像里面需要包含内核和文件系统tar包。
init:指定根系统的docker镜像,包括init、runc、containerd等。
onboot:启动过程中执行的系统服务,按顺序逐个运行,并且很快执行结束。
services:基于docker镜像的系统服务,这些服务在build的时候会由docker将其转换为oci格式,以便后续runc来启动
files:指定额外添加到镜像的文件
outputs:构建完成后的输出文件。支持通过mac os、qemu、google cloud platform、vmware等执行。未来也会支持在阿里云上直接运行。
我们看下只有redis的精简操作系统的yaml样例
接下来就可以用moby来构建和启动这个镜像。
linuxkit更多是一个工具集。而后面几个是面向终端用户的产品os。docker通过推出linuxkit不可避免的触及了这些os公司的利益。rancheros表示,他们对linuxkit持拥抱态度。
在16年1月份docker收购了英国的创业公司unikernel systems,linuxkit也是来自这个团队的出品。linuxkit的思想和unikernel相对来说是一脉相传,不过unikernel有不同的分支,比如mirageos、osv等。而在linuxkit里主要是使用了mirageos的unikernel方案。有了linuxkit的加持,“docker是否真正安全”有了新的解法。