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…