
前文我們介紹過在本地windows10環境中,基于hyper v容器的docker使用。現在阿裡雲已經提供了windows server 2016支援,我們來親自體驗一下原生的windows server容器吧。
系列文章
第二篇 阿裡雲windows server 2016環境docker試用 - 本文
windows server容器與linux容器非常類似,都是通過命名空間、資源控制等技術實作程序隔離。每個windows server容器都與主控端共享同一個核心。與hyperv容器相比,它的啟動速度更快、資源消耗更低。但是hyper v容器可以借助虛拟化技術提供更好的隔離性。
注:由于微軟的基礎作業系統鏡像在大陸下載下傳非常緩慢,建議選擇香港區域做實驗。
首先我們建立一個windows server 2016,請選擇型号iii的規格,并選擇“windows server 2016 資料中心版”作業系統鏡像。由于windows鏡像都比較大,建議擴大系統盤容量。
因為我希望通過windows remote desktop來通路ecs執行個體,需要在公網入方向開放rdp端口3389。其配置方法如下:
注:從安全角度出發,請按需配置需要對外暴露的端口。
在windows server的powershell中,執行如下指令安裝docker-microsoft的包管理實作
再安裝docker engine安裝包
完成之後,請執行下面指令重新開機伺服器
重新開機完畢,我們就可以通過如下指令檢視 docker engine 的狀态了。
這裡我們可以看到伺服器端作業系統/架構(os/arch)為“windows/amd64”;而容器的“預設隔離方式”(default isolation)為程序 “process”也就是windows server container
注:如果ecs部署在國内region,可以需要配置docker hub加速器。在香港和海外region無需如下配置。
通路 <code>https://cr.console.aliyun.com</code> 獲得加速器位址
在powershell中執行如下指令
重新開機docker engine
注:微軟的系統鏡像中的層檔案并不儲存在docker hub之上,在國内通路非常痛苦,即使配置了阿裡雲加速器也無法提升傳輸效率。可以通過docker save/load的方式加載作業系統基礎鏡像。
在測試目錄建立如下<code>dockerfile</code>檔案,它會在微軟iis鏡像的基礎上,添加一個"index.html"
建構docker鏡像,并命名為 "myiis"
執行如下指令,啟動
docker run -d -p 80:80 myiis
我們利用浏覽器打開ecs主機的位址,就可以看見我們生成的網頁了。 (注,需要在安全組配置中建立http協定的公網入方向配置)
docker從1.12版本之後提供了 <code>isolation</code> 參數,可以由使用者選擇不同的隔離機制
比如,在windows環境可以用如下指令分别以 windows server container 和 hyperv 的隔離方式執行 iis
阿裡雲環境中,windows server本身就是運作在虛拟化環境中,是以目前不支援 hyperv 的容器運作時。
由于windows server container和作業系統共享核心是以它隻能運作windows作業系統鏡像,而不能運作linux的鏡像。
在阿裡雲上利用windows server 2016和docker技術可以靈活地傳遞windows應用,對于企業使用者而言有着重要的意義。在之後的文章中,我們會逐漸介紹windows容器的其他特性比如swarm模式叢集支援等。