動手玩Windows 10 Docker(5) - 以Windows Nano Server和Server Core為基礎的Container

Windows 10 Docker 是2016年度更新後很大的一個進步但(好像)被很多人忽略沒有話題性

這個系列是我的學習筆記也順便推廣這好用的東西

大家好, 上一篇介紹了Docker的儲存部份, 這一回我們來玩玩Docker for Windows裡的Windows Container

 Windows 專屬的container和前幾篇的docker container不同的地方是它們不是運行在Linux上

好像很理所當然地他們也需要借助一個Windows 平台為基本

如果我們有打過一個指另docker version, 我們會見到在預設情況下Server端os是linux/amd64

在這個情況下我們不能使用甚至不能安裝Windows類型的Docker和Container,

我們要先轉變Server端為Windows環境才可以繼續下去

小鯨魚工具表上我們能夠找到一個選項叫Switch to Windows containers...

如果你沒有做過這個轉變的步驟, Docker需要重新啟動電腦一次才能繼續進行

完成後再檢查docker version, 你應該會見到Server端改變成windows/amd64

Linux的container建基在不同種類的linux發行版本上, 例如ubuntu, debian, Centos這些都很普遍

而Windows Container就建基於Windows Server 2016研發階段才出現的一個版本叫Nano Server

也有一些是和Server Core的Container綁在一起的

Nano Server比以前的Server Core更細小, 它可以以VHD的形式獨立存在

在Windows Server 2016的安裝ISO裡可以找到它,

而Nano Server自己也可以是一個Container, 而有些套件建基於Windows系統的也可以和Nanoserver一起綑綁

微軟有一個列表列出暫時可以找到的Windows Container, 但事實上每天都在增加中

https://docs.microsoft.com/en-us/virtualization/windowscontainers/samples

使用Windows Container的方式和Linux類型的docker指令基本上是一樣的

例如我們可以找找Microsoft自己有沒有甚麼Docker可以使用

docker search microsoft

我們可以見到microsoft/nanoserver和microsoft/windowsservercore

我們可以把他們Pull下來把玩一下, 在今天NanoServer的下載大小只有200MB左右

而ServerCore的Container下載時已經有4Gb了, 可以看到他們在大小上已經有很大分別.

Nano Server很多方面都和普通的Windows Server不同, 以下網站有說明分別

https://technet.microsoft.com/en-us/windows-server-docs/get-started/getting-started-with-nano-server

舉例來說, 在Nano server上你找不到登入介面, 只有64 bits版本, 不能成為一台域控制器

也不能執行群組原則, 有幾個工作是微軟推薦以Nano Server來執行的,

例如DNS , IIS Server, 或者是Scale-Out檔案服務.

另外, Nano Server上的Powershell版本叫Powershell Core, 比普通的Powershell少了很多指令, 請參考

https://technet.microsoft.com/en-us/windows-server-docs/get-started/powershell-on-nano-server

還有一個東西, 就是授權, 我們不能忽略使用Windows Container也是要購買版權的

https://www.microsoft.com/en-us/cloud-platform/windows-server-pricing

微軟有說明如果你要在投產環境使用Nano Server, 你需要是Software Assurance授權客戶

但和以往的虛擬機器比較, 無論你在Standard或是Datacenter版本的Windows Server上

你也可以運行無限個Windows Container, 這是非常大的優勢! 

例如你現在用Windows Server 2012 Standard運行2個VM來實行2個IIS服務器

如果你新購入Windows Server 2016, 就算是Standard版本你可以運行無限個IIS的Container了

回頭看看下載回來的Image, nano server只有非常小的925 MB

但相比linux的docker, 顯得還是有點大...

我們就試試進入Nano Server, 方式如同在linux的docker一樣, 但我們要執行的是powershell.exe

由於很多常用指令都沒有了, 你可以用以下指令來知識這個Windows的版本

[environment]::OSVersion.Version

看看機器名稱, IP配置...

Nano Server有原生的功能找尋工具叫find-package, 可以再這個container上增加功能

例如看看有甚麼東西跟Azure相關會有以下的資料

也有另一種指令叫Nano Server Package, 但需要先安裝部件啟動功能

但我們先在這裡停住...因為我們不是要玩Nano Server啊 XDDD

下一篇我們來實作一些現成強大的Windows Docker Container, 跟Linux比較一下