原文:http://collabnix.com/running-linuxkit-locally-on-oracle-virtualbox-platform-made-easy/
LinuxKit 体系结构
Linuxkit使用Docker技术重新构建Linux系统。
在LinuxKit的基础中, 是一个现代的Linux kernel,指定的kernel Docker image, 包含一个kernel和filesystem, 以及其他软件模块。最小的 init 模块 init
处理 Docker image, 展开为 base system, 包含 init
, containerd 和很少的其他工具
。 从 pkg/init/.
构建而来,onboot containers 是系统 containers, 按照顺序执行。当完成后会快速终止。 services是系统级的services, 通常在系统的整个存活期运行. .files
是额外的一些文件,用于添加镜像。
LinuxKit最新进展
下面是 LinuxKit 最新的一些进展(2017.12):
今年早些时候, 我写了 a blog post ,里面谈到了如何手工创建 LinuxKit ISO 镜像,然后mount 到VirtualBox并运行。里面的方法较为复杂,要求转换 VMDK 文件格式到 .VDI 格式,然后到VirtualBox中注册、运行。
在VirtualBox上运行LinuxKit
这里介绍一个新的方法: linuxkit run vbox
CLI, 只需要几分钟就可以启动一个 VirtualBox虚拟机。
这里,我们将看到 LinuxKit OS 如何被构建,然后打包为ISO文件,然后到VirtualBox中运行。当然,ISO文件也是可以刻到光盘、U盘,用于直接运行的,不过目前没有测试,感兴趣的可以试试。
要求:
- MacOS Sierra
- Docker for Mac installed on MacOS
- Docker Up and Running
- Oracle VirtualBox
复制LinuxKit Repository:
git clone https://github.com/linuxkit/linuxkit
Building the LinuxKit Tool
cd linuxkit
make
把 LinuxKit 放到可执行路径目录:
cp bin/linuxkit /usr/local/bin/
构建 ISO image
在构建Virtualbox的可运行 ISO 之前 ,我们先看一下linuxkit构建工具命令和选项:
现在使用 `LinuxKit build` 选项来构建 ISO image. 先看一下linuxkit build子命令:
运行下面的目录构建 iso-bios格式的镜像,docker.yml 在 linuxkit/examples 目录下。
linuxkit build -format iso-bios --name testbox examples/docker.yml
生成出来的 ISO image 如下所示:
VirtualBox中运行 ISO
Justin Cormack, 一个LinuxKit 维护者,做了一个重要的工作,带来了一个新的 CLI option linuxkit run vbox
如下所示:
运行下面的命令,初始化 LinuxKit OS 虚拟机:
linuxkit run vbox --iso test
如下所示:
到VirtualBox Manager中看一下:
打开了 Console,可以看到VM运行的情况:
So, you can access either through terminal or directly under the console but NOT both at the same time.
访问 Docker Service Container
To access the Docker service container, first list out the running service containers:
ctr tasks ls
This will list out the running service containers as shown below:
进入 docker service container 看一下Docker版本:
ctr tasks exec -t --exec-id 502 docker sh
这将允许进入 shell,如下所示。运行 docker version
命令查看当前运行的Docker版本。
需要注意,这些 service container缺省是没有启用网络的。你需要手动到 VirtualBox > Settings > Network > Advanced t去启用网络,如下。
我发起了一个 issue 到 LinuxKit Team,可以看这里: here.
我们再次回到终端控制台,拉取几个 Docker images,如下:
也可以拉取系统级的镜像来运行,如:
ctr images pull docker.io/library/nginx:latest
ctr images pull docker.io/library/docker:latest
但是,如果是ISO格式无法存储,下次启动就没有了哈。
噢 ! 我们在VirtualBox把LinuxKit OS里的 Docker service container 运行起来啦!
If you are looking out for contribution/discussion, join me at Docker Community Slack Channel.