將此篇文章跟 Facebook 上的朋友分享將此篇文章跟 Plurk 上的朋友分享將此篇文章跟 Twitter 上的朋友分享列印轉寄
2017/8/28

微軟伺服器原生Docker環境 與Hyper-V容器原理不同

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

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


Windows Server主機重新啟動後,查詢Windows Server主機網路連線的部分,會發現多了一個「vEthernet (HNS Internal NIC)」的虛擬網路卡,並且IP位址為「172.x.x.x/255.255.240.0」(本文實作環境IP為172.27.144.1),如圖6所示。這個虛擬網路卡便是屆時Docker運作環境中容器虛擬網路的部分,後續再進行詳細說明。

當Windows Server下載及安裝Docker運作環境後,便可以透過基礎操作指令來了解Docker運作環境的相關資訊。舉例來說,管理人員只要執行「docker info」指令,系統便會詳細顯示目前Windows Server主機的Docker運作環境資訊,包含運作中的容器數量、暫停狀態的容器數量、停止狀態的容器數量、容器虛擬網路類型、容器主機記憶體容量等等。

倘若想要查詢目前Windows Server主機的Docker版本資訊,只要鍵入「docker version」指令即可,如圖7的操作結果所示,本文實作環境中Docker引擎及Docker用戶端版本為「17.03.1-ee-3」。


▲ 圖7 查詢Windows Server主機的Docker運作環境版本資訊。


下載Windows Server基礎容器映像檔

在Windows Server的容器運作環境中,有兩種不同類型的基礎容器映像檔,包括Windows Server Core和Nano Server。倘若管理人員希望下載Windows Server Core容器映像檔,只要開啟PowerShell指令視窗後鍵入「docker pull microsoft/windowsservercore」指令即可。若要下載的是Nano Server容器映像檔,則開啟PowerShell指令視窗再執行「docker pull microsoft/nanoserver」指令,如圖8所示。


▲ 圖8 下載Windows Server Core和Naon Server容器映像檔。


事實上,當鍵入上述兩行指令後,本地端的Windows Server主機便會至Docker Hub網站,下載由Windows官方建立的Windows Server Core和Nano Server容器映像檔,因此管理人員不必擔心下載到被加入惡意程式的容器映像檔。

那麼這兩個下載的Windows Server Core及Nano Server容器映像檔將會占用多少空間呢?此時,管理人員只要鍵入「docker images」指令即可查看。如圖9所示,在本文實作環境中,Windows Server Core容器映像檔為10.2GB,而Nano Server容器映像檔則是1.02GB。


▲ 圖9 查詢Windows Server Core和Naon Server容器映像檔占用空間大小。


部署第一個Windows Server容器「Hello World」

至此,Windows Server容器運作環境已經準備完畢,管理人員可以直接從Docker Hub下載預先建立好的Hello World範例容器,以便部署及執行簡單的Hello World應用程式。在開啟的PowerShell指令視窗中,如圖10所示鍵入「docker run hello-world :nanoserver」指令即可。


▲ 圖10 部署及執行第一個Windows Server容器。


由於剛才已經先行下載好Windows Nano Server容器映像檔,所以不必再次下載Nano Server容器映像檔,因此會發現執行這個Hello World容器的速度非常快速。

部署第二個Windows Server容器「IIS」

在剛才的練習中,已經順利運作第一個Windows Server容器。接著,實作練習第二個最常使用的Windows Server容器「IIS網頁伺服器」。

只要鍵入「docker run -d --name MyIIS -p 80:80 microsoft/iis」指令即可,此行指令中「-d」參數表示此執行的IIS容器在背景運作,而「--name MyIIS」則是給予此IIS容器的名稱,至於「-p 80 :80」,則表示將Windows Server主機的Port 80,與執行運作的IIS容器Port 80進行對應的動作。


▲ 圖11 下載及執行基於Windows Server Core運作環境的IIS容器。


由於此IIS容器會使用Windows Server Core容器映像檔為作業系統基底,所以Windows Server主機若沒有Windows Server Core容器映像檔的話,便會需要花費額外的下載及安裝時間。由於在本文實作環境中,剛才已經下載好Windows Server Core容器映像檔,所以無須等待重下載及安裝時間。

部署及執行IIS容器的動作完成後,如圖11所示可以發現此IIS容器占用的空間大小為10.5GB,也就是相較於Windows Server Core容器映像檔,加上300MB相關組態設定檔案。




在開始與剛才執行的IIS容器進行互動之前,管理人員可以先執行「docker ps」指令查詢目前運作中的容器資訊,如圖12所示。從執行結果中可以看出,目前Windows Server主機上運作的容器只有一個(透過「docker info」指令也能查詢容器運作狀態數量),並且可以看到容器ID、容器映像檔、執行指令、容器建立時間、運作狀態、連接埠對應、容器名稱等等。


▲ 圖12 進入IIS容器互動模式並自訂IIS歡迎頁面內容。


確認IIS容器仍持續運作中,接著執行「docker exec -i MyIIS cmd」指令進入IIS容器內執行互動作業,成功地進行IIS容器互動模式後,指令視窗中的提示字元將由原本的PowerShell變成命令提示字元。

首先,執行「del C:\inetpub\wwwroot\iisstart.htm」指令,刪除IIS容器內預設的歡迎頁面,然後輸入「echo "This IIS Welcome page from Windows Server Container" > C:\inetpub\wwwroot\index.html」指令,將自訂字串訊息寫入IIS容器內的IIS歡迎頁面中。最後執行「exit」指令,離開IIS容器互動模式回到Windows Server容器主機。

這篇文章讓你覺得滿意不滿意
送出
相關文章
秒速容器服務 挺應用轉型
Hyper-V隔離容器 支援.NET程式獨立運行
網路層貫通地端與雲端 實現容器隨需遷移
整併CoreOS底層技術 增強Day 2維運能力
WS 2019正式登場 新特色功能快速剖析
留言
顯示暱稱:
留言內容:
送出