LinuxKit+Moby 初体验

官网:https://github.com/linuxkit/linuxkit

在Ubuntu 16.04进行测试。

什么是LinuxKit

LinuxKit是用于构建最小化定制的,不可改变的linux分发的工具集。

安装基础依赖

如果已安装请跳过。

sudo apt-get install -yqq docker.io golang git

安装moby

mkdir ~/gopath
export GOPATH=~/gopath
export PATH=${PATH}:${GOPATH}/bin
go get -u github.com/linuxkit/linuxkit/src/cmd/moby

构建iso镜像

git clone https://github.com/linuxkit/linuxkit.git

mkdir ~/linuxkitiso/
cp linuxkit/linuxkit.yml ~/linuxkitiso

cd ~/linuxkitiso
sudo moby build linuxkit.yml

根据网络情况等待,提示输出了iso文件没有报错就可以了。

启动linuxkit前的准备

运行linuxkit依赖qemu-system,如果没有需要安装一下。

sudo apt-get install qemu-system

启动linuxkit镜像

这是一个默认的nginx镜像。

sudo moby run linuxkit

目前有些平台还不支持moby run,那么你也可以如下启动:

sudo ./scripts/qemu.sh linuxkit-initrd.img linuxkit-bzImage linuxkit-cmdline

或者:

./scripts/qemu.sh linuxkit.iso

查看一下操作系统类型

/ # cat /etc/*release
3.5.2
NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.5.2
PRETTY_NAME="Alpine Linux v3.5"
HOME_URL="http://alpinelinux.org"
BUG_REPORT_URL="http://bugs.alpinelinux.org"

查看进程树

/ # pstree
init-+-containerd---containerd-shim---nginx---nginx
     |-containers---ctr
     |-sh---pstree
     `-sh

查看启动的容器

/ # runc list
ID          PID         STATUS      BUNDLE                        CREATED                          OWNER
nginx       466         running     /run/containerd/linux/nginx   2017-04-20T03:33:07.638862448Z   root

测试linuxkit

linuxkit是只读的,所以没办法安装curl,用wget测试。

/ # wget -qO- 127.0.0.1
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

linuxkit docker镜像

源码中在examples目录中提供了几个模板,其中docker.yml可以在系统中启动docker,可以一定程度上解决前面linuxkit只读的问题,自行尝试。

mkdir ~/dockeriso/
cp docker.yml ~/dockeriso/
cd ~/dockeriso
moby build docker.yml
moby run docker

注意一点,启动docker系统后,没有doker命令,为毛?因为docker本身就是容器,所以要进入容器才可以使用。

/ # runc exec -t docker sh
/ # docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

槽点:linuxkit和内部容器的prompt行居然一样,啥玩?

退出linuxkit

exit
logout
quit

尼玛,不行,不知道怎么退出,官方文档没找到。暴力拆卸:

pkill -9 -f qemu-system-x86_64

定制linuxkit镜像

复制 linuxkit.yml 改名为mylinuxkit.yml,编辑后像前面一样执行构建和启动。

moby build mylinuxkit
moby run mylinuxkit

配置项

linuxkit实例中的几个主要配置项如下:

kernel

指定docker镜像的内核,它包含一个内核和一个文件系统的tar包。示例的内核构建在`/kernel`目录中。

init

是一个docker容器的init进程的基础。它将在容器中解压,包含"init"、"containerd"、"runc"及其他几个工具。示例中构建在`pkg/init/`目录中。

onboot

是系统级的容器,按照配置顺序依次运行,执行完后立即结束。如:ntpd,dhcpd

services

是系统级的服务,他们通常在系统启动后适中运行。如:nginx

files

附加到系统中的文件集合。

outputs

输出的镜像文件。

更多配置细节参见:https://github.com/linuxkit/linuxkit/blob/master/docs/yaml.md

转载于:https://my.oschina.net/polly/blog/883571

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值