docker理論方面的東西

上篇寫了docker實踐方面的東西,想想還是補充一下理論方面的吧,也好成爲一個體系,方便學習。

docker可以用運輸業的集裝箱來形象表示,沒有集裝箱之前,貨物運輸是這樣的:

這種情況下,貨物怎麼運輸,哪種運輸工具運送哪種貨物,沒有一個標準,實際貨物運輸起來將會非常雜亂,形成如下的類似於全排列的東西

看看這個,是不是花眼了,沒有統一的標準,就會帶來大量的侷限性,試想一下,火車要適應運輸所有貨物的任務,那麼它要做多少改造,這是一種對運力巨大的浪費,有了docker之後就是這樣了

docker將所有的內部實現包裝起來,只留下外部統一的接口,負責和宿主機進行交互,就跟jvm一個道理,不管裏面實現多麼複雜,對外都是統一的接口,真正實現了一次打包,隨處運行的的目標。

那麼docker究竟是什麼呢

Docker 能將應用封裝成一個標準化單元,稱作鏡像,裏面包含了應用運行所需的一切:系統工具/庫、運行時、應用代碼等。鏡像具有自包含的特點。這樣就保證了,不管在什麼硬件環境下,應用都能一致的運行。

它有如下特性

輕量

多個Docker容器共享同一個宿主機操作系統內核;
秒級啓動;
鏡像使用分層文件系統,共享相同層,節省磁盤;
開放
遵循開放標準(OCI):國內外各大公司都共同參與;
運行在Linux/Windows/Mac以及任何基礎設施之上;
安全
容器將應用和基礎設施隔離;
相比較虛擬機,docker優勢很明顯,docker使用的內核技術:
Namespace:用於進程隔離,可以隔離文件系統、PID、IPC、網絡、UTS、USER等;
Cgroup:用於進程資源控制,可以控制進程CPU、內存等資源的使用量。
或許下邊這兩張圖會更加直觀一點吧

好了,理論方面的大概就這些,其實這些也是借鑑各種資料,畢竟理論方面的東西,大部分人都是這麼來的!還是那句話,不重複製造輪子,看完這篇,配合上一篇,相信會滿足初級docker學習者的要求吧!純屬學習筆記,非喜勿噴!




發佈了53 篇原創文章 · 獲贊 42 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章