源码:https://github.com/linuxkit/linuxkit
LinuxKit 快速入门
转载请注明来源:https://my.oschina.net/u/2306127/blog/1595914
LinuxKit,用于构建自定义的最小、不可更改的Linux分发版的工具。其内核和系统服务全部采用容器技术实现,基于ContainerD和RunC,支持OCI(开放容器规范)。
- 缺省的安全性,不妥协的可用性。
- 任何部分都是可替换的、可定制的。
- 通过构建Linux分发版创建不可更改的基础设施。
- 完整的无状态但是持久性存储可以被挂载。
- 简单的工具,易于迭代。
- 基于容器构建,用于运行容器。
- 设计用于构建和运行集群化应用,包括但不限于容器集成,如Docker或者Kubernetes。
- 根据构建容器版本的经验设计,但是重新设计为一个通用的工具集。
- 设计为可被外部工具管理,如 Infrakit 或者类似的工具。
- 包含一系列长期协作工程,用于不同开发的阶段,包括 kernel 和 userspace 改变, 尤其是安全。
子项目
- LinuxKit kubernetes 帮助构建最小、不可更改的 Kubernetes images. (以前库中的
projects/kubernetes
)。
开始
构建 linuxkit
工具
LinuxKit 使用 linuxkit
工具用于构建、推送和运行 VM images。
简单 build 指令: 使用 make
进行 build。构建好的工具在 bin/
目录下,添加到你的 PATH
环境变量中或者拷贝到任何 PATH
覆盖到的路径,使用 sudo cp bin/* /usr/local/bin/
。或者使用 sudo make install
进行安装。
如果已经有 go
安装,你可以使用 go get -u github.com/linuxkit/linuxkit/src/cmd/linuxkit
来安装 linuxkit
工具。
在 MacOS 这里有 brew tap
可用。细节说明在 linuxkit/homebrew-linuxkit, 简述为:
brew tap linuxkit/linuxkit
brew install --HEAD linuxkit
从源码构建要求:
- GNU
make
- Docker
- optionally
qemu
Building images
首先,构建Linuxkit工具。然后,运行:
linuxkit build linuxkit.yml
来构建示范镜像。你可以指定不同的输出格式,如 linuxkit build -format raw-bios linuxkit.yml
输出 raw BIOS 可启动镜像文件, 或者 linuxkit build -format iso-efi linuxkit.yml
输出支持 EFI 的可启动 ISO格式的 image。查看 linuxkit build -help
获得更多信息。
因为 linuxkit build
围绕 Moby tool 构建,这个输入 yml 文件的描述在 Moby tool documentation。
启动和测试
使用 linuxkit run <name>
或者 linuxkit run <name>.<format>
执行你从 linuxkit build <name>.yml
创建的镜像,这将需使用合适的支撑平台,例如VMWare。查看 linuxkit run --help
。
目前支持的平台包括:
- Local hypervisors
- Cloud based platforms:
- Baremetal:
- x86 and arm64 servers on packet.net
- Raspberry Pi Model 3b
运行测试
测试套件使用 rtf
,安装使用 make bin/rtf && make install
. 需要同时安装 expect
在你的系统上,有的测试需要这个支持库才能运行。
运行测试套件:
cd test
rtf -x run
这将运行测试,并将结果放入 _results
目录!
运行控制使用标签和模式匹配来处理。为了运行添加标签,使用:
rtf -x -l slow run
运行符合模式 linuxkit.examples
的测试,使用下面的命令:
rtf -x run linuxkit.examples
构建自己定制化的镜像
为了定制化,复制和修改 linuxkit.yml
到你自己的 file.yml
或者使用 examples 里面的,然后运行 linuxkit build file.yml
来产生给定的输出。可以运行产生的输出镜像文件 linuxkit run file
。
这个 yaml 文件制定了 kernel 和 基础 init system, ,一系列containers 也被构建进创建的image中,而且在启动时运行。你可以指定artifact的类型,在 moby
工具中,如linuxkit build -format vhd linuxkit.yml
。
如果你希望构建自己的软件包,参考 document。
Yaml 参考
yaml 格式文件指定了镜像将如何被构建:
kernel
指定的内核容器镜像,包含kernel 和filesystem的tarball, 一起其他容器化模块。示例 kernels 从kernel/
构建。init
是基础的init
进程容器镜像,展开为 base system, 包含init
,containerd
,runc
少部分其他工具。从pkg/init/
构建。onboot
是系统 containers, 按顺序执行。完成后快速终止。services
系统服务,通常在系统整个运行期运行。files
额外的文件,将被添加到镜像中。
更多的选项参考: yaml documentation
架构与安全
参考 overview of the architecture ,涵盖系统如何工作的内容。covering how the system works.
参考 overview of the security considerations and direction 包含该系统的安全设计。
路线图
这是一个开放项目,没有固定的评价,由社区来决定方向。
一些基本的原则性指南包括:
- Security 指导下的设计。
- 基础架构即代码: 不可更改, 基于代码的可管理性。
- 合理的, 安全的, 良好测试的缺省值。
- 开放、可插拔的平台,针对多样化的使用场景。
- 易于使用,易于参与的项目。
- 基于容器构建,可移植性,可重新生成。
- 运行基于系统容器,隔离性和可扩展性。
- 成为可靠产品构建的基石。
开发报告
每周的 development reports ,包含每周的摘要和工作总结。
FAQ
查看 FAQ。
许可协议:Apache 2.0 license.