這幾年網路上在談論Containers與Docker時,大多談論的都是在Linux平台下的虛擬環境,但您可知在Windows Server 2016下,也已經開始提供所謂的Windows虛擬環境的Containers與Docker喔!
由於網路上許多談論Container與Docker的內容,大多針對的是Linux的虛擬環境,即使將Docker安裝在Windows環境下(稱為Docker for Windows),也是提供Linux的Containers的環境。
所以這次的主題,我想要來談一下,如何在Windows Server 2016平台的環境下,安裝與部署並建置出所謂的Windows虛擬環境的Containers與Docker,這裡為了區別這個Containers與Docker,我刻意的在前面加上Windows,稱為Windows Containers與Windows Docker。
Windows Containers 是Windows Server 2016 上,所提出來提供 Windows 應用系統平台下的虛擬化作業,Windows Containers 亮相的時間約在 Windows Server 2016 TP2時,開始放在網路上,讓對如何建立Windows虛擬應用系統環境有興趣的人開始可以測試並研究 Windows Server 2016上,可做的 Windows Containers的應用,於是也有許多人在網路上發表了許多有關Windows Server 2016 Containers的文章。
但有趣的是,Windows Containers期初從TP2一直到TP5,微軟密切提供 Windows Containers的操作,是採用了一系列的PowerShell指令,例如:以下的PowerShell指令是用來建立一個新的Windows Container:
New-Container -Name IIS -ContainerImageName WindowsServerCore New-Container -Name IIS -ContainerImageName WindowsServerCore –RunTimeType HyperV
於是網路上就有許多有關使用PowerShell操作Windows Containers的文章出現。
可是,最要注意的是,在Windows Server 2016正式版發佈後,以上許多有關操作Windows Containers的PowerShell指令,在正式版發佈後,卻不再支援提供了,像上述的指令就不再支援了。
這是為什麼呢?以我個人的觀察,我想最主要的原因應該是因為從最早期出現Containers的虛擬操作環境,都是以Docker的操作環境為主,而微軟初期,我想應該是想要創造出一個對Windows Containers的環境,有不同管理與操作的模式,所以就以PowerShell為主的方式,來建立了另一種操作Windows Container的環境。
但可能也是在推出後,大部分測試者的反應不盡理想,因為大部分的測試者都應該是熟悉Docker操作的使用者,所以最終,我想還是因為敵不過廣大使用 Docker 的操作者習慣的要求,從善如流的在 Windows Server 2016 正式版的環境下,改採用了大家較熟悉的Docker來操作需要建立的Windows Containers 的環境。
我在這裡特別提出來的意思,是提醒學習Windows Containers的同學們,當您上網找尋有關Windows Containers的技術文件時,如果看到有使用PowerShell在說明如何操作Windows Containers時,就要先測試一下,是否真的可以執行,否則就趕快先跳過,不要一頭栽下去,然後還是執行不出來。 好了,接下來,我們就要來談一下,如何來建置這個Windows Container與Windows Docker的環境。
Windows Containers的功能是直接提供在Windows Server 2016 預設的【新增/移除角色與功能】的環境下,當您有需要時,便可直接選擇安裝起來。
但是,當您將Windows Containers安裝起來之後,並不代表您就可以操作與管理Windows Containers的環境了。
以目前 Windows Server 2016正式版的環境,您還必須要安裝Windows Docker的操作管理環境才能使用。
一般我們在網路上,大部分找到如何安裝Docker與使用Docker的相關技術性資訊,大多是用來操作Linux虛擬環境下的Container。但Windows Docker則是用來操作Windows虛擬環境的Container,所以在這裡特別提醒注意喔!Windows Docker不是Docker for Windows。
Windows Docker的操作環境雖說與其他一般Docker操作的方法大多相似,但由於Containers的操作環境不同,Docker在應用的設定環境上,也就多少會有些差異。
在Windows Server 2016環境下,對Windows Docker安裝,也有不一樣的安裝方式,這個方式也是在Windows Server 2016之後,所提出來的另一種屬於線上套件安裝的模式。
首先,您的Windows Server 2016 在完成Windows Containers 的安裝後,請記得您的主機環境必須能連線到網際網路上。
然後打開 PowerShell的指令環境,執行以下的指令:
此項指令是在您的主機環境中,建立需要的套件供應商的PowerShell環境。
接下來,執行以下的指令,便可以進行由Microsoft所提供Docker套件模組的安裝。安裝的順序,要先安裝微軟模組供應商的環境,之後,才能夠進行Docker套件的安裝,安裝完畢之後,重新開機。
在完成以上的安裝環境並重新開機之後,系統會建立一個Docker的服務,而且要在開機後,自動啟動起來,所以記得要檢查Docker服務有沒有啟動起來。
Docker的服務程式是由一支名稱為Dockerd.exe的程式所執行的環境,如果沒有成功的啟動起來的話,大概有兩種情況:第一是Windows Server 2016的版本更新作業沒有更新,更新版的內容須是在2017年3月後的更新。
另一個情況就是沒有註冊成功,您可以執行以下的指令,解除這個服務,然後重新在進行服務的註冊。
解除服務 dockerd.exe --unregister-service
註冊服務 dockerd.exe --register-service
當您的Docker服務啟動起來之後,還要搭配一支名稱為docker.exe的程式,這是一支Docker用戶端操作的程式,所以,如果想要檢查Docker環境是否可以使用,可以執行以下的指令,代表Docker的服務端與用戶端都有成功的啟動起來。
之後,就可以使用Windows Docker來進行 Windows Containers 的操作、管理與規劃了,如下圖所示。
至於如何使用Docker來設計我們需要的Windows Containers的環境,有機會下次我們繼續來談。