共用系統核心資源 玩轉Windows Server容器

採用微軟開發的Windows容器技術,就能夠以Windows Server容器提供類似Linux的容器環境。若同時結合Docker容器管理技術,則可減輕資料中心維運人員的管理負擔。本文將介紹Windows容器技術,並進行實作示範。

在2013年時,有家名為dotCloud提供SaaS服務的公司,在該公司內有項名稱為Docker的業餘專案,它是使用Google的Go語言進行實作。

後來,dotCloud公司讓此專案加入Linux基金會並在GitHub進行推廣及維護,此專案迅速受到廣大開發人員的喜愛同時也讓DevOps議題捲起更大的浪潮,甚至dotCloud後來直接更改公司名稱為Docker Inc。

Docker容器管理技術如此受歡迎的主要原因之一,在於過去最困擾開發人員與維運人員的部分便是快速建立完備的開發環境。當開發人員需要某些開發環境時,企業或組織的維運人員便要依需求建立VM虛擬主機、安裝作業系統、組態設定網路環境等等,接著再交由開發人員安裝相關應用程式或載入函式庫等等,此時才準備好整個開發環境,而Docker的出現剛好能夠解決這個困擾已久的問題。


事實上,「容器」(Container)技術早已出現許久,而Docker則是讓容器管理這項工作任務變得容易操作及管理。一開始,Docker容器管理技術普遍只能運作在Linux環境中,而微軟自從新任執行長Satya上任並大力擁抱開放原始碼之後,也在新一代的Windows Server 2016雲端作業系統中與Docker公司合作,打造出在Windows Server 2016作業系統中原生執行Docker引擎的容器管理環境。

不同的容器管理環境

雖然在Windows Server 2016作業系統內已經成功打造Docker容器管理環境,但是整個Docker容器管理實作技術與Linux作業系統環境是完全不同的。簡單來說,Linux容器映像檔並無法運作在Windows Server Container容器環境內,而Windows容器映像檔也無法在Linux Container容器環境中運作,根本原因是採用「不同API」(Windows API vs Linux API)的運作環境,那麼就來看看有哪些根本上的不同,如圖1所示。


▲圖1 Linux與Windows容器環境運作架構示意圖。(圖片來源:Docker and Microsoft - Windows Server 2016 Technical Deep Dive)

Linux容器環境

Linux容器環境分成幾個部分,以下加以說明:

‧ Control Group:控制群組,針對共享資源進行隔離並管控硬體資源的使用,例如記憶體、檔案快取、CPU、磁碟I/O等等資源使用率的管理。

‧ Namespaces:命名空間,確保每個容器都有單獨的命名空間,讓容器之間的運作互相隔離不受任何影響。

‧ AUFS:檔案系統,不同容器之間可以共享相同基礎的檔案系統層,實現分層功能,並將不同目錄掛載到同一個虛擬檔案系統中。

小標Windows容器環境

Windows容器環境區分幾個部分,以下分開說明:

‧ Job Objects:類似Linux容器環境中的控制群組機制。

‧ Object Namespace、Process Table、Networking:類似Linux容器環境中的命名空間機制。

‧ Compute Service:作業系統層級的運算服務層。

‧ NTFS:檔案系統,每個運作的容器各自擁有一份NTFS分區表,搭配虛擬區塊儲存裝置建立容器多層式檔案系統,再利用Symlink機制把不同層級的檔案對應到Host環境檔案系統內的實際檔案,以減少虛擬區塊儲存裝置所占用的儲存空間。


此外,在Docker版本方面,到了2017年也有重大改變,從2017年3月開始Docker採用新的版本以及版本命名規則。首先,Docker EE(Enterprise Edition)取代舊有的Docker CS(Commercially Supported)版本,而Docker開放原始碼版本重新命名為Docker CE(Community Edition)。至於版本命名規則與Ubuntu的命名規則類似,將以西元「年.月」的方式命名,例如v17.03、v17.06、v17.09等等,如圖2所示。


▲圖2 Docker版本命名規則示意圖。(圖片來源:Docker Blog - Announcing Docker Enterprise Edition)


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!