前言:
昨天新買了一臺windows server 2016的云服務(wù)器,需要安裝docker,發(fā)現(xiàn)使用Docker For Windows安裝的方式行不通,原來有使用這種方式安裝docker的同學(xué)應(yīng)該知道,它需要使用系統(tǒng)中的Hyper-V功能去做虛擬化,但是在云服務(wù)器中是無法開啟Hyper-V的,因?yàn)樵品?wù)器已經(jīng)做了一次虛擬化,所以使用另一種方式來安裝docker,當(dāng)然還可以使用docker toolbox安裝,但是既然windows server 2016系統(tǒng)支持docker,還是根據(jù)官方指南走一遍。
缺點(diǎn):Windows Container 只能運(yùn)行 Windows應(yīng)用程序(至少現(xiàn)在是這樣)
當(dāng)前Docker Hub上面的大量鏡像無法在Windows Container 中使用,比如Consul和Mysql等常見鏡像,微軟已經(jīng)開始在Docker Hub上提供Windows容器鏡像,你可以使用同樣的docker pull命令或者去這些鏡像。
比如:
microsoft/windowservercore 鏡像是一個完整的服務(wù)器鏡像(大概3G大?。?,在這個鏡像中你可以使用標(biāo)準(zhǔn)的msi安裝包,通過Dockerfile來構(gòu)建你自己鏡像,可以安裝和運(yùn)行完整的.net framework和其他的Windows應(yīng)用程序。
microsoft/nanoserver 鏡像則是一個精簡版的操作系統(tǒng)鏡像(大概300M),不提供msi支持,只能運(yùn)行.net core應(yīng)用,同時需要使用powershell進(jìn)行管理。
所以這種方式運(yùn)行的容器服務(wù)只適合跑Microsoft平臺下的東西。
安裝:
Windows Server 2016已經(jīng)支持Docker技術(shù),參考官方博客進(jìn)行安裝,但是會有幾處坑點(diǎn)需要注意,所以這里記錄一下。
第一步:安裝PackageManagement
打開PowerShell執(zhí)行命令:
首先,從 PowerShell 庫安裝 Docker-Microsoft PackageManagement 提供程序,根據(jù)提示安裝。
Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
接下來,使用 PackageManagement PowerShell 模塊安裝最新版本的 Docker。
Install-Package -Name docker -ProviderName DockerMsftProvider
第二步:手動下載文件
注意:
這時候會提示你,找不到路徑“C:\Users\ADMINI~1\AppData\Local\Temp\DockerMsftProvider\Docker-1-12-2-cs2-ws-beta.zip”,這個時候需要你手動下載。

去報錯提示的路徑地址查看,有一個json文件,打開后里面有一個版本對象,里面可能有很多個版本信息,找到你本次需要安裝的版本,復(fù)制出里面的下載鏈接,手動下載。

文件內(nèi)容如下:

第三步:重新安裝
再重新執(zhí)行下面的命令
Install-Package -Name docker -ProviderName DockerMsftProvider
然后在命令執(zhí)行的過程中(先執(zhí)行,再復(fù)制,如果先復(fù)制進(jìn)去,文件夾內(nèi)容會被清空),打開這個之前提示缺少zip文件的目錄“C:\Users\ADMINI~1\AppData\Local\Temp\DockerMsftProvider”,把你之前手動下載的zip文件復(fù)制進(jìn)去
第四步:重啟計(jì)算機(jī)
PowerShell 詢問是否信任包源“DockerDefault”時,鍵入 A 以繼續(xù)進(jìn)行安裝。 完成安裝后,重啟計(jì)算機(jī)。
Restart-Computer -Force
第五步:安裝系統(tǒng)更新
執(zhí)行命令
sconfig
將出現(xiàn)一個文本配置菜單,可以選擇其中的選項(xiàng) 6 下載并安裝更新:
===============================================================================
Server Configuration
===============================================================================
1) Domain/Workgroup: Workgroup: WORKGROUP
2) Computer Name: WIN-HEFDK4V68M5
3) Add Local Administrator
4) Configure Remote Management Enabled
5) Windows Update Settings: DownloadOnly
6) Download and Install Updates
7) Remote Desktop: Disabled
...
出現(xiàn)提示時,選擇選項(xiàng) A 下載所有更新,這一步的時間可能會比較久,耐心等待。
第六步:驗(yàn)證安裝
查看版本信息
docker version
接下來就可以愉快的跑docker了
Windows Server 2019
docker run microsoft/dotnet-samples:dotnetapp-nanoserver-1809
Windows Server 2016
docker run microsoft/dotnet-samples:dotnetapp-nanoserver-sac2016
容器啟動后,請打印 hello world 消息,然后退出。
Hello from .NET Core!
__________________
\
\
....
....'
....
..........
.............'..'..
................'..'.....
.......'..........'..'..'....
........'..........'..'..'.....
.'....'..'..........'..'.......'.
.'..................'... ......
. ......'......... .....
. ......
.. . .. ......
.... . .......
...... ....... ............
................ ......................
........................'................
......................'..'...... .......
.........................'..'..... .......
........ ..'.............'..'.... ..........
..'..'... ...............'....... ..........
...'...... ...... .......... ...... .......
........... ....... ........ ......
....... '...'.'. '.'.'.' ....
....... .....'.. ..'.....
.. .......... ..'........
............ ..............
............. '..............
...........'.. .'.'............
............... .'.'.............
.............'.. ..'..'...........
............... .'..............
......... ..............
.....
**Environment**
Platform: .NET Core
OS: Microsoft Windows 10.0.17763