在Windows Server 2016正式版上的Containers與Docker的部署

屠立剛 Joseph

  • 精誠資訊 恆逸教育訓練中心 資深講師
  • 技術分類:網路管理與通訊應用

這幾年網路上在談論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 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 Containers的功能是直接提供在Windows Server 2016 預設的【新增/移除角色與功能】的環境下,當您有需要時,便可直接選擇安裝起來。

但是,當您將Windows Containers安裝起來之後,並不代表您就可以操作與管理Windows Containers的環境了。

以目前 Windows Server 2016正式版的環境,您還必須要安裝Windows Docker的操作管理環境才能使用。

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的環境,有機會下次我們繼續來談。

相關學習資源