LinuxKit是什么?
在奥斯汀举办的DockerCon17上,Docker公司的CTO Solomon宣布了一个新的开源项目LinuxKit 。我们从几个问题出发去研究下到底什么是LinuxKit。
1.Linuxkit是什么?
LinuxKit是用来构建安全、可移植、精益的专门为容器服务的操作系统的工具集。(A toolkit for building secure, portable and lean operating systems for containers,https://github.com/linuxkit/linuxkit)
精益:
LinuxKit可以构建一个非常轻量裁剪版的操作系统,最小只有35M,所有的系统服务都是基于容器。实际上LinuxKit就是基于Alpine发行版之上。(Linuxkit's roots are in Alpine. A stronger Alpine is a stronger linuxkit. We'll continue to invest in Alpine.)
安全:
LinuxKit的几个安全设计原则:
1.使用现代安全配置的内核
2. 最小化base
3. 类型安全的系统Daemon。会借助原先的 MirageOS项目来构建unikernels。
4. 安全镜像构建链条。通过TUP、签名方式的镜像来保证镜像构建过程的不可变和可信。
5. 不可变架构。使用一个只读文件系统。
6. 使用外部可信的资源创建。依赖infrakit来更新LinuxKit的节点
7. 孵化更多的安全项目,如WireGuard和okernel
可移植:
可以在裸金属、云平台、IOT等之上运行。
2.Linux有什么作用和场景?
- 对于非Linux平台但希望支持Linux容器的场景,如Mac OS和Windwos
- 打造一个更安全的操作系统,降低安全攻击平面。
- 针对特定的物理设备和需求,打造定制化的OS。
3.如何通过Linuxkit制作一个新的镜像。
LinuxKit需要编写一个yaml文件,来配置所需要的服务。可选的配置包括
kernel:指定内核的Docker镜像,镜像里面需要包含内核和文件系统tar包。
init:指定根系统的docker镜像,包括init、runc、containerd等。
onboot:启动过程中执行的系统服务,按顺序逐个运行,并且很快执行结束。
services:基于docker镜像的系统服务,这些服务在build的时候会由docker将其转换为OCI格式,以便后续runc来启动
files:指定额外添加到镜像的文件
outputs:构建完成后的输出
下面看下只有redis的精简操作系统的YAML样例
image: "linuxkit/kernel:4.9.x"
cmdline: "console=ttyS0 console=tty0 page_poison=1"
init:
- linuxkit/init:63eed9ca7a09d2ce4c0c5e7238ac005fa44f564b
- linuxkit/runc:b0fb122e10dbb7e4e45115177a61a3f8d68c19a9
- linuxkit/containerd:18eaf72f3f4f9a9f29ca1951f66df701f873060b
services:
- name: dhcpcd
image: "linuxkit/dhcpcd:0d4012269cb142972fed8542fbdc3ff5a7b695cd"
binds:
- /var:/var
- /tmp/etc:/etc
capabilities:
- CAP_NET_ADMIN
- CAP_NET_BIND_SERVICE
- CAP_NET_RAW
net: host
- name: redis
image: "redis:3.0.7-alpine"
capabilities:
- CAP_NET_BIND_SERVICE
- CAP_CHOWN
- CAP_SETUID
- CAP_SETGID
- CAP_DAC_OVERRIDE
net: host
outputs:
- format: kernel+initrd
接下来就可以用moby来启动这个镜像。
4.LinuxKit和原来的面向容器的操作系统CoreOS Container Linux, Rancher or Atomic有什么关系?
LinuxKit更多是一个工具集。而后面几个是面向终端用户的产品OS。
最后更新:2017-04-25 11:00:43
上一篇:
Java中的值传递和引用传递
下一篇:
RDS SQL Server死锁(Deadlock)系列之四利用Service Broker事件通知捕获死锁
记 php-fpm 重启导致的 程序执行中断问题
双11前夕,阿里技术人都在忙什么?
Android实现图片宽度100%ImageView宽度且高度按比例自动伸缩
学生信息管理系统问题集锦
如何让App首屏启动更快 -- httpdns持久化缓存方案
《Java特种兵》5.1 基础介绍
ubuntu进行apt-get时候出现Package ssh is not available, but is referred to by another package 错误
struts中采用注解配置Action
LSTM长短记,长序依赖可追忆(深度学习入门系列之十四)
linux web服务器必须正确配置php-f…