Contianer簡介
Container歷史
1979 - Unix chroot
2000 - FreeBSD Jails
2001 - Linux VServer
2008 - LXC (LinuX Containers)
2013 - Docker
2016 - Windows Container
Container與VM的結構
1979 - Unix chroot
2000 - FreeBSD Jails
2001 - Linux VServer
2008 - LXC (LinuX Containers)
2013 - Docker
2016 - Windows Container
Container這個技術的概念在1979年的時候就出現在Unix上,一個名叫chroot的功能。
以一個比較簡單的方式說明chroot這個功能,就是把要執行的程式,透過chroot改變他的根目錄位置,並建立一個跟原系統隔離的系統目錄,讓這個程式不能對指定目錄以外的檔案進行存取動作。
到了2000年的時候由FreeBSD研發部門推出了Jails的容器技術。它是一種類似於chroot的功能,包括隔離系統檔案、用戶和網絡等功能,進而創造出幾個小型的軟體系統。
在2001年的時候出現了Linux
Vserver這個東西,Linux Vserver是一項為 Linux
加入虛擬作業系統能力的技術,這項技術對 Linux 核心進行了一些修改,讓vserver
能在同一個 Linux 核心之下同時執行多個彼此無關的作業系統,及分配CPU、記憶體等資源等給各個作業系統,而且完全不會消耗額外的運算能力。此時也漸漸的看到Container的完整樣貌。
2008年,LXC的出現成了這個世上第一個最完整的Linux contianer。
2013年,Docker出現了,Docker是由原dotCloud平台服務公司開發的,截至至今Docker也是目前最受歡迎的Contianer管理系統。
根據上述的介紹我們大致可以了解,最早的時候為了將執行的程式與原系統隔離,使得Contianer技術的概念有了開始,發展的過程中也為這項技術改寫了Linux的核心和添加了資源的配置,促使了LXC以完整的Linux
Container姿態問世,催生出Docker這樣方便的管理系統。
另外補述一下
2015年的時候,微軟大幅改寫了Windows,使得Windows作業系統開始支援了Contianer這項技術,並與Docker合作採用了Docker管理系統來管理Windows
Contianer。在2016年的時候,Windows
Contianer隨著Windows
server 2016的發佈一同問世,這也使得Contianer倍受矚目的原因之一。
接著我們來看一下Contianer與VM的結構,我們先看右邊Contianer的圖
Linux
核心自 2.6.29 版本之後,就開始內建
Container 這項技術,如果我們要在Contianer上提供一個或多個服務,只需要在實體Server上安裝Linux作業系統,再搭配像Docker這易於管理系統,便可以產生多個Contianer來提供多個服務,或是一個Contianer上提供多個服務,每個Contianer都直接套用底層Linux核心進行運行,這也使得Contianer運行速度如同底層Linux一樣快速。
接著我們看左手邊的VM,我們以Hypervisor Type 2 為例
在實體Server上安裝標準作業系統,在作業系統上安裝Hypervisor軟體,譬如VMWARE
WORKSTATION、Virtual
BOX,新增虛擬機後在虛擬機上安裝作業系統、相關套件及提供服務的軟體,這樣就可以以一個或多個虛擬機來提供服務,而每個虛擬機都是獨立的個體,不會相互影響。
從VM的圖來看,明顯的比Contianer多了Hypervisor和Guest
OS,使得VM在使用上更讓操作者貼近於實體機器的感覺,獨立又不複雜的作業環境。
相對的,Contianer少了Hypervisor來模擬機器,共用底層作業系統的核心,不用另外安裝Guest
OS,所以也就能獲得趨近於原生的工作效率。
Container與VM的差異
Contianer
|
VM
|
|
輕量化
|
✓
|
|
操作簡易
|
✓
|
|
易於備份、還原
|
✓
|
✓
|
網路易於配置
|
✓
|
✓
|
接著我們看兩者之間的比較
輕量化
– 由於Contianer裡頭只需要放入必需的系統檔案、相關套件、欲執行的軟體服務,相對的檔案較小、啟動速度快。VM由於需要安裝Guest OS相對檔案會大很多,啟動方式受限於Guest OS本身的啟動流程及Hypervisor的模擬,相對CPU、記憶體的耗損較多。
操作簡易
– 由於VM是將完整的作業系統放入虛擬機,所以對於平時慣用工具或指令都能完整的提供,對於整個虛擬機控管較容易。
易於備份還原
– Contianer本身檔案較小又可匯出成tar檔,所以備份相對快速簡便,如果要單獨部份資料備份出來,也可以將Contianer內特定目錄share到指定目錄下進行備份,或是資料還原。VM也是易於備份及還原,但因為體積的龐大關係,需要的網路資源和儲存空間就多很多。
網路易於配置
– 兩者都易於配置網路,但對外透通的方式及設定不同。
附註:Hypervisor type1,2差異
留言
張貼留言