共計 1779 個字符,預計需要花費 5 分鐘才能閱讀完成。
本篇內容介紹了“Container 是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
1.1 Why Container?
以下將從不同時期應用部署、運維的優缺點展開說明。
操作系統(OS)
??直接在物理機上部署應用,無法做到應用之間資源隔離以及合理利用。
資源不隔離。一個內存使用量比較大的 app 可能消耗所有的內存資源,導致其他 app 無法正常提供服務。
所有 app 共享一份物理機運行環境(kernel+app)。無法做到按照 app 定制化運行環境或則 app 對特定內核的要求。
如果將多個 app 部署在不同的物理機上。a. 需要購買大量物理機器,花費較大。b. 需要不同 app 對于硬件要求不同,需要特殊定制。c. 需要花費大量運維時間。
當前,cpu、內存等硬件發展速度遠遠高于軟件的速度。很多老的系統自需要少量的 cpu 或者內存,但是其獨占一臺機器,造成資源浪費。
虛擬機(VM)
??虛擬機的出現,彌補了上面的不足。虛擬機將物理機器資源統一抽象為單元,按需分配。不同的實例之間資源隔離、獨立的內核。但是隨著互聯網的快速發展,要求 app 能夠快速擴展資源以及實例。當前的虛擬機機器顯然不能滿足此需要。其主要有以下幾點
鏡像臃腫。每個鏡像少則幾百兆,正常都在幾個 GB 大小。
創建和啟動時間開銷大,不利于快速重組。(不能滿足互聯網彈性計算要求)
性能損耗大
額外的資源開銷大
容器技術(Container)
??很早以前就有了容器化的概念。近幾年隨著互聯網井噴式的發展,容器機器有了一個很好的契機暴露在大眾的眼前。
鏡像體積小。只包括應用以及所依賴的環境,沒有內核
創建和啟動快。不需要啟動 GuestOS,應用啟動開銷基本就是應用本身啟動的時間開銷
無 GuestOS,無 hypervisor,無額外資源開銷,資源控制粒度更小,部署密度大
使用的是真實物理資源,因此不存在性能損耗
輕量級
容器也有缺點
隔離性相對虛擬機弱。由于和宿主機共享內核,帶來很大的安全隱患,容易發生逃逸。
如果某些應用需要特定的內核特性,使用容器不得不更換宿主機內核。
容器技術發展
linux chroot- google cgroup- lxc(linux container)- docker(libContainer)
hyper
Hyper = Hypervisor + Docker 鏡像
??Hyper 是一個基于虛擬化技術(hypervisor)的 Docker 引擎。官方認為雖然 Hyper 同樣通過 VM 來運行 Docker 應用,但 HyperVM 里并沒有 GuestOS,相反的,一個 HyperVM 內部只有一個極簡的 HyperKernel,以及運行的 Docker 鏡像。這種 Kernel+Image 的”固態”組合使得 HyperVM 和 Docker 容器一樣,實現了 ImmutableInfrastructure 的效果。借助 VM 天然的隔離性,Hyper 能夠完全避免 LXC 共享內核的安全隱患。
1.2 Why Docker?
Docker 項目最初是由一家名為 dotCloud 的平臺即服務廠商所打造,其后該公司更名為 Docker。與 Warden 類似,Docker 同樣在起步階段使用 LXC,而后利用自己的 libcontainer 庫將其替換下來。與其它容器平臺不同,Docker 引入了一整套與容器管理相關的生態系統。其中包括一套高效的分層式容器鏡像模型、一套全局及本地容器注冊表、一個精簡化 REST API 以及一套命令行界面等等。在后期發展階段,Docker 公司還構建起一套名為 Docker Swarm 的容器集群管理解決方案。
快速構建基于容器的分布式應用
具有容器的所有優點
提供原生的資源監控
Docker 與虛擬機原理對比:
由于容器技術很早就有,Docker 最核心的創新在于它的鏡像管理,因此有人說:
Docker = 容器 + Docker 鏡像
Docker 鏡像的創新之處在于使用了類似層次的文件系統 AUFS,簡單說就是一個鏡像是由多個鏡像層層疊加的,從一個 base 鏡像中通過加入一些軟件構成一個新層的鏡像,依次構成最后的鏡像,如圖
“Container 是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注丸趣 TV 網站,丸趣 TV 小編將為大家輸出更多高質量的實用文章!