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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: LinuxKit:A toolkit for building secure, portable and lean operating systems for containers

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

1.Linuxkit是什么?

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

精益:

LinuxKit可以构建一个非常轻量裁剪版的操作系统,最小只有35M,所有的系统服务都是基于容器。实际上LinuxKit就是基于Alpine发行版之上。(Linuxkit's roots are in Alpine. A stronger Alpine is a stronger linuxkit. We'll continue to invest in Alpine.)

IMG_2096

安全:

LinuxKit的几个安全设计原则:

  1. 使用现代安全配置的内核
  2. 最小化base
  3. 类型安全的系统Daemon。会借助原先的 MirageOS项目来构建unikernels。
  4. 安全镜像构建链条。通过TUP、签名方式的镜像来保证镜像构建过程的不可变和可信。
  5. 不可变架构。使用一个只读文件系统。
  6. 使用外部可信的资源创建。依赖infrakit来更新LinuxKit的节点
  7. 孵化更多的安全项目,如WireGuard和okernel

可移植:

  1. 支持桌面、服务器、IOT和大型机
  2. 支持Intel和ARM
  3. 支持裸金属和虚拟化。

借助Linuxkit, 终于可以在Windows上运行Linux容器:
C9tGAG2UwAAZB7k

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

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

目录
相关文章
|
9天前
|
Ubuntu Linux pouch
Docker容器管理工具
文章介绍了Docker容器管理工具,以及早期使用的LXC容器管理工具,包括它们的安装、使用和相关技术特点。
38 10
Docker容器管理工具
|
9天前
|
监控 数据管理 pouch
Docker容器技术概览
关于Docker容器技术的概览,包括Docker的优势、劣势、核心技术、容器所依赖的技术,以及Docker容器的管理和编排工具。
36 7
Docker容器技术概览
|
9天前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
9天前
|
NoSQL 应用服务中间件 Redis
Docker跨宿主机容器通信-通过网络跨宿主机互联
这篇文章介绍了Docker容器跨宿主机通信的实现方法,包括Docker的四种网络模式(host、none、container、bridge)以及如何通过修改网络配置和添加路由规则来实现不同宿主机上的容器之间的互联。
25 0
Docker跨宿主机容器通信-通过网络跨宿主机互联
|
9天前
|
应用服务中间件 nginx Docker
Docker同一台宿主机容器通信-通过容器名称互联
本文详细介绍了如何通过容器名称实现同一宿主机上容器间的互联,并提供了实战案例。首先,文章解释了容器间通过自定义名称访问的原理,随后演示了创建并连接Tomcat与Nginx容器的具体步骤。此外,还讨论了配置中可能出现的问题及解决方案,包括避免硬编码IP地址和使用自定义容器别名来增强系统的灵活性与可维护性。通过这些实践,展示了如何高效地配置容器间通信,确保服务稳定可靠。
16 1
Docker同一台宿主机容器通信-通过容器名称互联
|
1天前
|
持续交付 开发者 Docker
掌握 Docker:容器化技术在现代开发中的应用
Docker 是一个开源容器化平台,使开发者能够将应用程序及其依赖项封装在轻量级容器中,确保跨平台的一致性。本文介绍了 Docker 的基本概念、核心组件及优势,并展示了其在快速部署、一致性、可移植性和微服务架构中的应用。通过示例说明了 Docker 在本地开发环境搭建、服务依赖管理和 CI/CD 流程中的作用,以及多阶段构建、资源限制和网络模式等高级特性。掌握 Docker 可大幅提升开发效率和应用管理能力。
|
9天前
|
应用服务中间件 Shell nginx
Docker容器操作基础命令
关于Docker容器操作基础命令的教程,涵盖了从启动、查看、删除容器到端口映射和容器信息获取的一系列常用命令及其使用方法。
50 14
|
7天前
|
运维 安全 开发者
Docker容器技术
Docker容器技术
28 6
|
7天前
|
Cloud Native 持续交付 Docker
云原生技术实践:Docker容器化部署教程
【9月更文挑战第4天】本文将引导你了解如何利用Docker这一云原生技术的核心工具,实现应用的容器化部署。文章不仅提供了详细的步骤和代码示例,还深入探讨了云原生技术背后的哲学,帮助你理解为何容器化在现代软件开发中变得如此重要,并指导你如何在实际操作中运用这些知识。
|
7天前
|
负载均衡 大数据 测试技术
docker容器技术有哪些应用场景?
docker容器技术有哪些应用场景?
19 5