一切使之容器 — Container with Application (2)

容器的本質是什麼?

上回一切使之容器 — Container with Application (1),一起了解了容器的演進過程。

那容器的本質到底是什麼?

先說結論,他是一種特殊的程序(進程)

而容器技術就是透過約束與進程運行時,創造出虛擬的界線。
對於 Docker 或大多數 Linux 容器來說,Cgroups 技術是用來創造約束的效果,而Namespace 技術則是用來修改進程視圖的方法。

Namespace

Namespace 的技術能夠有什麼作用呢?

假設現在有 50 個進程,那他們的 PID 就會是 1.2.3...49.50,那現在利用 Namespace 技術創造第 51 個進程,這個進程會進入一個全新的空間,此時這個進程中的 PID 會從 1 開始,但在原本的宿主機上還依然是 51 號進程。

原來 Namespace 技術只是遮掩了宿主機中一部分的進程,讓容器以為他是第一個進程,就等同於 PID = 1。

由此,我們知道容器技術的最核心概念就是透過特殊的進程建立容器。這也就是為什麼容器是單進程模型

Cgroups

竟然容器會以為自己是整個主機,那容器就很有可能直接吃掉宿主機的全部資源,由此容器技術就透過 Cgroups 來限制容器中的資源使用。

Linux Cgroups 的全名是 Linux Control Group,基本上是用來限制一個進程組的資源使用,包括 CPU,記憶體,磁碟,網路頻寬等等。

所以我們得知,容器技術並不神秘,甚至理解了為什麼他能夠這麼快速,因為,他只是個特殊的進程,並沒有使用虛擬化技術,當然也跟虛擬機有很大的差異。

既然是單進程模型,那一次就只適合運行一個應用,這也就是 Docker 項目在官方文件中強力推薦,一個應用一個容器,事實上他受於先天上的限制,當然也得利於環境隔離。

解決了製作容器與限制資源之後,容器還有一個重要的技術尚未說明,那就是文件系統。

那,容器技術是如何解決文件系統的呢?
下一篇分享見。

yasuoyuhao 2018/12/28
如果喜歡我的文章,可以按下喜歡或追隨讓我知道呦,更歡迎許多大神指點討論。感謝您的閱讀。
部落格:yasuoyuhao's Area

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一一與旋轉屋 徐空文 (這是十幾年前創作的第一個劇本,雖然幼稚,但現在看來竟是我最喜歡的劇本之一,雖然之後曾以寫劇...
    徐空文阅读 551评论 0 5
  • 程序員創業白皮書 作者:Paul Graham Paul Graham是程序員,專欄作家。他在1995年創建了第一...
    刘立山John阅读 1,946评论 0 20
  • ...#include #include using namespace std;#define N 100in...
    uit2016孙佳泉阅读 631评论 0 2
  • 夜已深,宝贝在我怀里安静的睡着了,今天晚陪着我熬夜,很感动,也很幸福。今天是19期训练营开营的日子,对我来说也是生...
    琦_c97a阅读 624评论 4 0
  • 毫无疑问这是一部让人肾上腺素不断攀高的青春励志偶像剧。彭于晏一个人艳压群雄,王璐丹在众多美男堆里明显力不从心,如果...
    菀尔记阅读 517评论 0 1