天天看點

雲原生必備知識:容器

所屬技術領域:

雲原生

| 名詞定義 |

容器,是一個視圖隔離、資源可限制、獨立檔案系統的程序集合,它将系統的其他資源隔離開來,具有自己獨立的資源視圖。“視圖隔離”,指的是能夠看到部分程序、有獨立的主機名,“資源可限制”,指的是可以限制記憶體大小、CPU 使用個數等。

| 發展曆程 |

 容器概念始于 1979 年提出的 UNIX chroot,它是一個 UNIX 作業系統的系統調用,将一個程序及其子程序的根目錄改變到檔案系統中的一個新位置,讓這些程序隻能通路到這個新的位置,進而達到了程序隔離的目的。

 2000 年的時候 FreeBSD 開發了一個類似于 chroot 的容器技術 Jails,這是最早期,也是功能最多的容器技術。Jails 英譯過來是監獄的意思,這個“監獄”(用沙盒更為準确)包含了檔案系統、使用者、網絡、程序等的隔離。

 2001 Linux 也釋出自己的容器技術 Linux VServer,2004 Solaris 也釋出了 Solaris Containers,兩者都将資源進行劃分,形成一個個 zones,又叫做虛拟伺服器。

 2005 年推出 OpenVZ,它通過對 Linux 核心進行更新檔來提供虛拟化的支援,每個 OpenVZ 容器完整支援了檔案系統、使用者及使用者組、程序、網絡、裝置和 IPC 對象的隔離。

 2007 年 Google 實作了 Control Groups( cgroups ),并加入到 Linux 核心中,這是劃時代的,為後期容器的資源配額提供了技術保障。

 2008 年基于 cgroups 和 linux namespace 推出了第一個最為完善的 Linux 容器 LXC。

 2013 年推出到現在為止最為流行和使用最廣泛的容器 Docker,相比其他早期的容器技術,Docker 引入了一整套容器管理的生态系統,包括分層的鏡像模型,容器注冊庫,友好的 Rest API。

 2014 年 CoreOS 也推出了一個類似于 Docker 的容器 Rocket,CoreOS 一個更加輕量級的 Linux 作業系統,在安全性上比 Docker 更嚴格。

 2016 年微軟也在 Windows 上提供了容器的支援,Docker 可以以原生方式運作在 Windows 上,而不是需要使用 Linux 虛拟機。

基本上到這個時間節點,容器技術就已經很成熟了,再往後就是容器雲的發展,由此也衍生出多種容器雲的平台管理技術,其中以 kubernetes 最為出衆,有了這樣一些細粒度的容器叢集管理技術,也為微服務的發展奠定了基石。是以,對于未來來說,應用的微服務化是一個較大的趨勢。

雲原生必備知識:容器

| 技術特點 |

為程序提供一個獨立的運作環境:

• 針對不同程序使用同一個檔案系統所造成的問題而言,Linux 和 Unix 作業系統可以通過 chroot 系統調用将子目錄變成根目錄,達到視圖級别的隔離;程序在 chroot 的幫助下可以具有獨立的檔案系統,對于這樣的檔案系統進行增删改查不會影響到其他程序;

• 因為程序之間互相可見并且可以互相通信,使用 Namespace 技術來實作程序在資源的視圖上進行隔離。在 chroot 和 Namespace 的幫助下,程序就能夠運作在一個獨立的環境下了;

• 但在獨立的環境下,程序所使用的還是同一個作業系統的資源,一些程序可能會侵蝕掉整個系統的資源。為了減少程序彼此之間的影響,可以通過 Cgroup 來限制其資源使用率,設定其能夠使用的 CPU 以及記憶體量。

資料來源:

  1. 名詞定義: https://developer.aliyun.com/lesson_1651_13082?
  2. 發展曆程: https://www.cnblogs.com/bakari/p/8868850.html
  3. 技術特點: 延伸閱讀:

Kubernetes、docker、《10個精選的容器應用案例》等。

繼續閱讀