Docker CTO Solomon说的LinuxKit到底是什么?

    xiaoxiao2026-01-01  2

    在奥斯汀举办的DockerCon17上,Docker公司的CTO Solomon宣布了一个新的开源项目LinuxKit 。我们从几个方面出发研究下到底什么是LinuxKit。

    1.Linuxkit是什么?

    LinuxKit是用来构建安全、可移植、精益的专门为容器服务的操作系统的工具集。(A toolkit for building secure, portable and lean operating systems for containers,https://github.com/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容器:

    2.LinuxKit有什么作用和场景?

    对于非Linux平台但希望支持Linux容器的场景,如Mac OS和Windwos打造一个更安全的操作系统,降低安全攻击平面。针对特定的物理设备和需求,打造定制化的OS。

    3.如何通过Linuxkit制作一个新的镜像。

    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样例

    image: "linuxkit/kernel:4.9.x" cmdline: "console=ttyS0 console=tty0 page_poison=1" init: - linuxkit/init:63eed9ca7a09d2ce4c0c5e7238ac005fa44f564b - linuxkit/runc:b0fb122e10dbb7e4e45115177a61a3f8d68c19a9 - linuxkit/containerd:18eaf72f3f4f9a9f29ca1951f66df701f873060b services: - name: dhcpcd image: "linuxkit/dhcpcd:0d4012269cb142972fed8542fbdc3ff5a7b695cd" binds: - /var:/var - /tmp/etc:/etc capabilities: - CAP_NET_ADMIN - CAP_NET_BIND_SERVICE - CAP_NET_RAW net: host - name: redis image: "redis:3.0.7-alpine" capabilities: - CAP_NET_BIND_SERVICE - CAP_CHOWN - CAP_SETUID - CAP_SETGID - CAP_DAC_OVERRIDE net: host outputs: - format: kernel+initrd

    接下来就可以用moby来构建和启动这个镜像。

    4.LinuxKit和原来的面向容器的操作系统CoreOS Container Linux, RancherOS or Atomic有什么关系?

    LinuxKit更多是一个工具集。而后面几个是面向终端用户的产品OS。Docker通过推出LinuxKit不可避免的触及了这些OS公司的利益。RancherOS表示,他们对LinuxKit持拥抱态度。

    5.Linuxkit和Unikernel什么关系?

    在16年1月份Docker收购了英国的创业公司Unikernel Systems,LinuxKit也是来自这个团队的出品。LinuxKit的思想和unikernel相对来说是一脉相传,不过unikernel有不同的分支,比如MirageOS、OSv等。而在Linuxkit里主要是使用了MirageOS的unikernel方案。有了LinuxKit的加持,“Docker是否真正安全”有了新的解法。如果大家对Unikernel不了解,可以参看这篇文章:https://yq.aliyun.com/articles/55911 。

    相关资源:python入门教程(PDF版)
    最新回复(0)