前言:
昨天新买了一台windows server 2016的云服务器,需要安装docker,发现使用Docker For Windows安装的方式行不通,原来有使用这种方式安装docker的同学应该知道,它需要使用系统中的Hyper-V功能去做虚拟化,但是在云服务器中是无法开启Hyper-V的,因为云服务器已经做了一次虚拟化,所以使用另一种方式来安装docker,当然还可以使用docker toolbox安装,但是既然windows server 2016系统支持docker,还是根据官方指南走一遍。
缺点:Windows Container 只能运行 Windows应用程序(至少现在是这样)
当前Docker Hub上面的大量镜像无法在Windows Container 中使用,比如Consul和Mysql等常见镜像,微软已经开始在Docker Hub上提供Windows容器镜像,你可以使用同样的docker pull命令或者去这些镜像。
比如:
microsoft/windowservercore 镜像是一个完整的服务器镜像(大概3G大小),在这个镜像中你可以使用标准的msi安装包,通过Dockerfile来构建你自己镜像,可以安装和运行完整的.net framework和其他的Windows应用程序。
microsoft/nanoserver 镜像则是一个精简版的操作系统镜像(大概300M),不提供msi支持,只能运行.net core应用,同时需要使用powershell进行管理。
所以这种方式运行的容器服务只适合跑Microsoft平台下的东西。
安装:
Windows Server 2016已经支持Docker技术,参考官方博客进行安装,但是会有几处坑点需要注意,所以这里记录一下。
第一步:安装PackageManagement
打开PowerShell执行命令:
首先,从 PowerShell 库安装 Docker-Microsoft PackageManagement 提供程序,根据提示安装。
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文件,打开后里面有一个版本对象,里面可能有很多个版本信息,找到你本次需要安装的版本,复制出里面的下载链接,手动下载。
文件内容如下:
第三步:重新安装
再重新执行下面的命令
Install-Package -Name docker -ProviderName DockerMsftProvider
然后在命令执行的过程中(先执行,再复制,如果先复制进去,文件夹内容会被清空),打开这个之前提示缺少zip文件的目录“C:\Users\ADMINI~1\AppData\Local\Temp\DockerMsftProvider”,把你之前手动下载的zip文件复制进去
第四步:重启计算机
PowerShell 询问是否信任包源“DockerDefault”时,键入 A 以继续进行安装。 完成安装后,重启计算机。
Restart-Computer -Force
第五步:安装系统更新
执行命令
sconfig
将出现一个文本配置菜单,可以选择其中的选项 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
...
出现提示时,选择选项 A 下载所有更新,这一步的时间可能会比较久,耐心等待。
第六步:验证安装
查看版本信息
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