Moby & LinuxKit 初体验

Docker的开源部分被改名成了Moby,同时Docker公司还开源了一个LinuxKit的项目,大家可以先去看一下readme。

Moby是一个组装容器系统的框架。它包含一个容器化组件库和一个将这些组件组装成独立的容器系统的框架。目前,Docker正在被拆分成模块化的组件,将来,Docker会从这些被Moby打包的组件中被组装出来。

LinuxKit是一个用来构造最小Linux发行版的工具集。它通过Moby来创建镜像(image),使用LinuxKit工具来运行这些镜像。

下面我们来体验一下,首先确保你已经安装了DockerGolang

构建Moby

1
2
3
4
5
6
➜ git clone https://github.com/linuxkit/linuxkit.git
➜ cd linuxkit
➜ make && sudo make install
➜ moby version
moby version 0.0
commit: 1ff0e3beeeb1e741b9c5a54574f01ac5eee525a5

构建linux镜像

构建镜像是通过yaml文件(格式可以参考官方文档 LinuxKit YAML),linuxkit目录下有一个linuxkit.yml可以用,examples目录下也有很多可用的yaml文件,我们可以任选一个来构建,这里直接使用linuxkit.yml文件。

1
2
3
4
➜ linuxkit git:(master) moby build linuxkit.yml
最后在当前目录下输出了3个文件
Create outputs:
linuxkit-kernel linuxkit-initrd.img linuxkit-cmdline

运行LinuxKit镜像

运行通过linuxkit自带的linuxkit命令,命令在linuxkit/bin目录下,我们只是体验,也没必要写PATH,就直接写全路径吧。

1
2
3
4
5
6
7
8
9
10
11
12
13
➜ linuxkit git:(master) bin/linuxkit run linuxkit
...满屏满屏的输出,最后是熟悉的🐳
Welcome to LinuxKit
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
{ / ===-
\______ O __/
\ \ __/
\____\_______/
...

现在我们就是在我们自己构建的linux最小发行版里面了,敲几个命令试试吧,退出是halt

这个镜像只有54M,可以说是非常小了。

1
2
3
4
5
6
➜ linuxkit git:(master) ls -alh | grep linuxkit
-rw-r--r-- 1 vagrant vagrant 42 Sep 7 11:52 linuxkit-cmdline
-rw-r--r-- 1 vagrant vagrant 54M Sep 7 11:52 linuxkit-initrd.img
-rw-r--r-- 1 vagrant vagrant 6.3M Sep 7 11:52 linuxkit-kernel
drwxr-xr-x 2 vagrant vagrant 4.0K Sep 7 12:11 linuxkit-state
-rw-rw-r-- 1 vagrant vagrant 1.7K Sep 7 10:33 linuxkit.yml

Moby和LinuxKit是非常不错的工具,但一般来说我们是用不上的。如果你需要构建定制的linux发行版,那他们可以节约很多时间。但如果你只是想将应用放在容器里跑起来,那还是直接用Docker吧!

另外,Moby和LinuxKit应该还没有成熟,命令一天一个变化(夸张了),如果你发现上面的命令失效了,建议google一下,或者联系我(知乎 or whaterver)