Docker 鳥瞰docker生態系統

鳥瞰容器生態系統


一談到容器,大家都會想到 Docker。

Docker 現在幾乎是容器的代名詞。確實,是 Docker 將容器技術發揚光大。同時,大家也需要知道圍繞 Docker 還有一個生態系統。Docker 是這個生態系統的基石,但完善的生態系統纔是保障 Docker 以及容器技術能夠真正健康發展的決定因素。

大致來看,容器生態系統包含核心技術、平臺技術和支持技術。

 

容器核心技術


容器核心技術是指能夠讓 container 在 host 上運行起來的那些技術。

這些技術包括容器規範、容器 runtime、容器管理工具、容器定義工具、Registry 以及 容器 OS,下面分別介紹。

 

容器規範

容器不光是 Docker,還有其他容器,比如 CoreOS 的 rkt。爲了保證容器生態的健康發展,保證不同容器之間能夠兼容,包含 Docker、CoreOS、Google在內的若干公司共同成立了一個叫 Open Container Initiative(OCI) 的組織,其目是制定開放的容器規範。

目前 OCI 發佈了兩個規範:runtime spec 和 image format spec。有了這兩個規範,不同組織和廠商開發的容器能夠在不同的 runtime 上運行。這樣就保證了容器的可移植性和互操作性。

 

 

容器 runtime

runtime 是容器真正運行的地方。runtime 需要跟操作系統 kernel 緊密協作,爲容器提供運行環境。

如果大家用過 Java,可以這樣來理解 runtime 與容器的關係:Java 程序就好比是容器,JVM 則好比是 runtime。JVM 爲 Java 程序提供運行環境。同樣的道理,容器只有在 runtime 中才能運行。

 

lxc、runc 和 rkt 是目前主流的三種容器 runtime。

lxc 是 Linux 上老牌的容器 runtime。Docker 最初也是用 lxc 作爲 runtime。

runc 是 Docker 自己開發的容器 runtime,符合 oci 規範,也是現在 Docker 的默認 runtime。

rkt 是 CoreOS 開發的容器 runtime,符合 oci 規範,因而能夠運行 Docker 的容器。

 

容器管理工具

光有 runtime 還不夠,用戶得有工具來管理容器啊。容器管理工具對內與 runtime 交互,對外爲用戶提供 interface,比如 CLI。這就好比除了 JVM,還得提供 java 命令讓用戶能夠啓停應用不是。

lxd 是 lxc 對應的管理工具。

runc 的管理工具是 docker engine。docker engine 包含後臺 deamon 和 cli 兩個部分。我們通常提到 Docker,一般就是指的 docker engine。

rkt 的管理工具是 rkt cli。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章