专栏首页云架构修炼手册LinuxKit+Moby 初体验

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • RabbitMQ 延迟队列

    找到 Publish message,在 payload 中输入测试内容:"hello-001",点击 Publish message 按钮。

    pollyduan
  • Spring Boot集成JPA的Column注解命名字段无效的问题

    偶然发现,Spring Boot集成jpa编写实体类的时候,默认使用的命名策略是下划线分隔的字段命名。

    pollyduan
  • docker中java应用new FileOutputStream直接报Input/output error

    一个docker容器中跑着java应用,是一个定时任务,每天拉取远端文件包存到本机,命名为:decrypt-20181020

    pollyduan
  • @JacksonInject与@JsonAlias注解-JSON框架Jackson精解第4篇

    Jackson是Spring Boot(SpringBoot)默认的JSON数据处理框架,但是其并不依赖于任何的Spring 库。有的小伙伴以为Jackson只...

    字母哥博客
  • 035.集群安全-Pod安全

    为了更精细地控制Pod对资源的使用方式,Kubernetes从1.4版本开始引入了PodSecurityPolicy资源对象对Pod的安全策略进行管理,并在1....

    木二
  • tty命令手册

    1、查看当前有哪些用户登录以及终端名称,这个扩展示例里我们kill掉pts/1终端。

    院长技术
  • 2个实用新型专利可以代替论文评职称吗?

    往往对于论文发表来说可以选自的期刊有很多方式我们可以通过期刊的影响因子、难度和时间进行选择;而专利申请只能向国家专利局递交申请材料,审批时间是基本固定的。论文发...

    大葡萄
  • 高效学习,你需要知道的四大法则

    在我高二的时候班上有个同学叫伟强,个子不高、戴眼镜、坐第一排。上数学课的时候偶尔抬头看下黑板,几乎不看课本。每次上课前掏出一张大白纸,整节课就用铅笔在上面不停的...

    已废弃
  • 高效学习,你需要知道的四大法则

    在我高二的时候班上有个同学叫伟强,个子不高、戴眼镜、坐第一排。上数学课的时候偶尔抬头看下黑板,几乎不看课本。每次上课前掏出一张大白纸,整节课就用铅笔在上面不停的...

    麦时
  • 学界 | 强化学习+树搜索:一种新型程序合成方法

    作者:Riley Simmons-Edler、Anders Miltner、Sebastian Seung

    机器之心

扫码关注云+社区

领取腾讯云代金券