容器生態系統 - 天天5分鐘玩轉容器技術(2)

對於像容器這類平臺級別的技術,一般涉及的知識範圍會很廣,相關的軟件,解決方案也會不少,初學者每每容易迷失。java

那怎麼辦呢?docker


咱們能夠從生活經驗中尋找答案。
當咱們去陌生城市旅遊想了解一下這個城市通常咱們會怎麼作?ubuntu

我想大部分人應該會打開手機看一下這個城市的地圖:工具

  1. 城市大概的位置和地理形狀是什麼?學習

  2. 都由哪幾個區或縣組成?atom

  3. 主要的交通幹道是哪幾條?spa

一樣的道理,學習容器技術咱們能夠先從天上鳥瞰一下:操作系統

  1. 容器生態系統包含哪些不一樣層次的技術?code

  2. 不一樣技術之間是什麼關係?orm

  3. 哪些是核心技術哪些是輔助技術?

首先得對容器技術有個總體認識,以後咱們的學習纔可以有的放矢,纔可以分清輕重緩急,作到心中有數,這樣就不容易迷失了。

接下來我會根據本身的經驗幫你們規劃一條學習路線,一塊兒探索容器生態系統。

學習新技術獲得及時反饋是很是重要的,因此咱們立刻會搭建實驗環境,並運行第一個容器,感覺什麼是容器。

千里之行始於足下,讓咱們從瞭解生態系統開始吧。

鳥瞰容器生態系統

一談到容器,你們都會想到 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。

容器定義工具

容器定義工具容許用戶定義容器的內容和屬性,這樣容器就可以被保存,共享和重建。

docker image 是 docker 容器的模板,runtime 依據 docker image 建立容器。

dockerfile 是包含若干命令的文本文件,能夠經過這些命令建立出 docker image。

ACI (App Container Image) 與 docker image 相似,只不過它是由 CoreOS 開發的 rkt 容器的 image 格式。

Registry

容器是經過 image 建立的,須要有一個倉庫來統一存放 image,這個倉庫就叫作 Registry。

企業能夠用 Docker Registry 構建私有的 Registry。

Docker Hub(https://hub.docker.com) 是 Docker 爲公衆提供的託管 Registry,上面有不少現成的 image,爲 Docker 用戶提供了極大的便利。

Quay.io(https://quay.io/)是另外一個公共託管 Registry,提供與 Docker Hub 相似的服務。

容器 OS

因爲有容器 runtime,幾乎全部的 Linux、MAC OS 和 Windows 均可以運行容器。但這不併無妨礙容器 OS 的問世。

容器 OS 是專門運行容器的操做系統。與常規 OS 相比,容器 OS 一般體積更小,啓動更快。由於是爲容器定製的 OS,一般它們運行容器的效率會更高。

目前已經存在很多容器 OS,CoreOS、atomic 和 ubuntu core 是其中的傑出表明。

下一節繼續介紹容器平臺技術和容器支持技術。

二維碼+指紋.png

相關文章
相關標籤/搜索