容器的前世今生(一)

在這裏插入圖片描述

一:什麼是容器

容器其實是一種沙盒技術。顧名思義,沙盒就是能夠像一個集裝箱一樣,把你的用"裝"起來的技術。這樣,應用與應用之間,就因爲有了邊界而不至於相互干擾;而被裝進集裝箱的應用,也可以被方便地搬來搬去,這其實是PaaS最理想的狀態。

二:容器的本質

容器的本質是進程。容器就是未來雲計算系統中的進程;容器鏡像就是這個系統裏的".exe"安裝包。Kubernetes 就是操作系統!

三:容器的介紹

  • 容器的官方網站:https://www.docker.com/
  • 公司名稱:原名dotCloud 14年改名爲docker
  • 容器產品:docker 16年已經被更名爲Moby

四:容器和傳統虛擬機對比

容器 虛擬機
輕量級虛擬機 傳統虛擬機
所有容器共享宿主機內核 每臺虛擬機擁有一個獨立的內核
秒級啓動 分鐘級別
  • 容器和 VM 的主要區別:

容器提供了基於進程的隔離,而虛擬機提供了資源的完全隔離。虛擬機可能需要一分鐘來啓動,而容器只需要一秒鐘或更短。容器使用宿主操作系統的內核,而虛擬機使用獨立的內核。Docker的侷限性之一是,它只能用在 64 位的操作系統上。

五:Docker對服務器端開發/部署帶來的變化

實現更輕量級的虛擬化,方便快速部署;對於部署來說可以極大的減少部署的時間成本和人力成本;Docker支持將應用打包進一個可以移植的容器中,重新定義了應用開發,測試,部署上線的過程,核心理念就是 Build once, Run anywhere
1)標準化應用發佈,docker容器包含了運行環境和可執行程序,可以跨平臺和主機使用;
2)節約時間,快速部署和啓動,VM啓動一般是分鐘級,docker容器啓動是秒級;
3)方便構建基於SOA架構(面向服務的架構)或微服務架構的系統,通過服務編排,更好的松耦合;
4)節約成本,以前一個虛擬機至少需要幾個G的磁盤空間,docker容器可以減少到MB級;
5)方便持續集成,通過與代碼進行關聯使持續集成非常方便;
6)可以作爲集羣系統的輕量主機或節點,在IaaS平臺上,已經出現了CaaS,通過容器替代原來的主機。

六:Docker 優勢

1、交付物標準化
Docker是軟件工程領域的"標準化"交付組件,最恰到好處的類比是"集裝箱"。集裝箱將零散、不易搬運的大量物品封裝成一個整體,集裝箱更重要的意義在於它提供了一種通用的封裝貨物的標準,卡車、火車、貨輪、橋吊等運輸或搬運工具採用此標準,隧道、橋樑等也採用此標準。以集裝箱爲中心的標準化設計大大提高了物流體系的運行效率。傳統的軟件交付物包括:應用程序、依賴軟件安裝包、配置說明文檔、安裝文檔、上線文檔等非標準化組件。Docker的標準化交付物稱爲"鏡像",它包含了應用程序及其所依賴的運行環境,大大簡化了應用交付的模式。

2、一次構建,多次交付
類似於集裝箱的"一次裝箱,多次運輸",Docker鏡像可以做到"一次構建,多次交付"。當涉及到應用程序多副本部署或者應用程序遷移時,更能體現Docker的價值。

3、應用隔離
集裝箱可以有效做到貨物之間的隔離,使化學物品和食品可以堆砌在一起運輸。Docker可以隔離不同應用程序之間的相互影響,但是比虛擬機開銷更小。

  • 總之,容器技術部署速度快,開發、測試更敏捷;提高系統利用率,降低資源成本。

七:Docker的度量

Docker是利用容器來實現的一種輕量級的虛擬技術,從而在保證隔離性的同時達到節省資源的目的;Docker的可移植性可以讓它一次建立,到處運行;Docker的度量可以從以下四個方面進行:

1)隔離性
Docker採用libcontainer作爲默認容器,代替了以前的LXC。libcontainer的隔離性主要是通過內核的命名空間來實現 的,有pid、net、ipc、mnt、uts命令空間,將容器的進程、網絡、消息、文件系統和主機名進行隔離。
2)可度量性
Docker主要通過cgroups控制組來控制資源的度量和分配。
3)移植性
Docker利用AUFS來實現對容器的快速更新。
AUFS是一種支持將不同目錄掛載到同一個虛擬文件系統下的文件系統,支持對每個目錄的讀寫權限管理。AUFS具有層的概念,每一次修改都是在已有的只寫層進行增量修改,修改的內容將形成新的文件層,不影響原有的層。
4)安全性
安全性可以分爲容器內部之間的安全性;容器與託管主機之間的安全性。容器內部之間的安全性主要是通過命名空間和cgroups來保證的。容器與託管主機之間的安全性主要是通過內核能力機制的控制,可以防止Docker非法入侵託管主機。

八:Docker容器使用AUFS作爲文件系統

1)節省存儲空間
多個容器可以共享同一個基礎鏡像存儲。
2)快速部署
如果部署多個來自同一個基礎鏡像的容器時,可以避免多次複製操作。
3)升級方便
升級一個基礎鏡像即可影響到所有基於它的容器。
4)增量修改r容器使用AUFS
可以在不改變基礎鏡像的同時修改其目錄的文件,所有的更高都發生在最上層的寫操作層,增加了基礎鏡像的可共享內容。
在這裏插入圖片描述

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