2019-11-06 06:53:09 +00:00
|
|
|
|
# LinuxKit
|
2017-12-08 15:01:04 +00:00
|
|
|
|
|
|
|
|
|
`LinuxKit` 这个工具可以将多个 Docker 镜像组成一个最小化、可自由定制的 Linux 系统,最后的生成的系统只有几十 M 大小,可以很方便的在云端进行部署。
|
|
|
|
|
|
|
|
|
|
下面我们在 macOS 上通过实例,来编译并运行一个全部由 Docker 镜像组成的包含 nginx 服务的 Linux 系统。
|
|
|
|
|
|
2019-11-06 06:53:09 +00:00
|
|
|
|
## 安装 Linuxkit
|
2017-12-08 15:01:04 +00:00
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
$ brew tap linuxkit/linuxkit
|
|
|
|
|
|
|
|
|
|
$ brew install --HEAD linuxkit
|
|
|
|
|
```
|
|
|
|
|
|
2019-11-06 06:53:09 +00:00
|
|
|
|
## 克隆源代码
|
2017-12-08 15:01:04 +00:00
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
$ git clone -b master --depth=1 https://github.com/linuxkit/linuxkit.git
|
|
|
|
|
|
|
|
|
|
$ cd linuxkit
|
|
|
|
|
```
|
|
|
|
|
|
2019-11-06 06:53:09 +00:00
|
|
|
|
## 编译 Linux 系统
|
2017-12-08 15:01:04 +00:00
|
|
|
|
|
|
|
|
|
LinuxKit 通过 `yaml` 文件配置。
|
|
|
|
|
|
|
|
|
|
我们来查看 `linuxkit.yml` 文件,了解各个字段的作用。
|
|
|
|
|
|
|
|
|
|
`kernel` 字段定义了内核版本。
|
|
|
|
|
|
|
|
|
|
`init` 字段中配置系统启动时的初始化顺序。
|
|
|
|
|
|
|
|
|
|
`onboot` 字段配置系统级的服务。
|
|
|
|
|
|
|
|
|
|
`services` 字段配置镜像启动后运行的服务。
|
|
|
|
|
|
|
|
|
|
`files` 字段配置制作镜像时打包入镜像中的文件。
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
$ linuxkit build linuxkit.yml
|
|
|
|
|
```
|
|
|
|
|
|
2019-11-06 06:53:09 +00:00
|
|
|
|
## 启动 Linux 系统
|
2017-12-08 15:01:04 +00:00
|
|
|
|
|
|
|
|
|
编译成功后,接下来启动这个 Linux 系统。
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
$ linuxkit run -publish 8080:80/tcp linuxkit
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
接下来在浏览器中打开 `127.0.0.1:8080` 即可看到 nginx 默认页面。
|