本文字数:1679字
阅读时间:6分钟
导读
Windows Server 2019 现在可以使用了!它是Windows Server的下一个长期支持版本,对运行Docker Windows容器进行了一些非常有用的改进。Docker Captain Stefan Scherer已经在他的博客文章中总结了Docker在Windows Server 2019上的新功能。
更新:Windows的Docker第二版现已推出。它的主要内容为介绍Windows Server 2019
您需要Windows服务器来运行“单纯的”Docker容器,容器进程直接在主机操作系统上运行。您可以在Windows10上使用相同的docker images、相同的dockerfiles和相同的docker命令,但是还有一个额外的虚拟化开销,所以最好在测试环境中使用Windows Server VM。
在Windows 10 Docker桌面上开始是最简单的入门方法
如果您想查看最新版本的 Windows Server 并运行Docker容器,下面是您需要做的事情。
获取Windows Server 2019
您现在可以从您的Visual Studio订阅(如果您有的话)下载ISO,然后安装Windows Server 2019;如果您没有,可以下载180天评估版。已部署Windows Server 2019的虚拟机将很快可以在Azure上使用。
2019的安装过程与以前的Windows Server版本相同 - 从ISO启动VM并开始安装。于我而言我更喜欢没有GUI的核心安装:
我在我的Windows10计算机上运行的一个Hyper-V虚拟机上安装了2019服务器,虚拟机磁盘存储在一个外部SSD驱动器上。安装程序在几分钟内完成,运行速度非常快,即使只分配了4GB内存。
您还可以使用ISO从以前的Windows Server版本升级到2019版本。
连接到服务器
当您RDP进入Windows Server Core时,您只看到一个命令提示。第一次连接时,需要设置默认管理员帐户的密码。然后我喜欢将PowerShell设置为默认命令shell,因此每当RDP进入PowerShell会话时:
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon' -name Shell -Value 'PowerShell.exe -noExit'
配置Windows功能
要运行容器,您需要启用容器功能,对于非生产虚拟机,我还禁用了Windows Defender以停止它燃烧CPU周期。您需要在执行以下步骤后重新启动:
Install-WindowsFeature -Name ContainersUninstall-WindowsFeature Windows-DefenderRestart-Computer -Force
配置Windows更新
你要确保你更新了最新的版本,但是我禁用了自动更新,所以我只在需要的时候获取未来的更新。Windows Server Core中没有GUI,因此运行sconfig,然后选择:
选项5,将Windows更新设置为手动
选项7,启用对服务器的远程桌面访问
选项6,下载并安装所有更新内容
然后就可以安装Docker了。
在Windows Server 2019 上安装Docker
Windows Server许可包括Docker Enterprise的许可证成本,因此您可以运行企业版,并为Microsoft和Docker的容器提供生产支持。
最新的Docker Enterprise引擎是版本18.03,您可以使用PowerShell显式安装该引擎:
Install-Module -Name DockerMsftProvider -Repository PSGallery -ForceInstall-Package -Name docker -ProviderName DockerMsftProvider -Force -RequiredVersion 18.03
这将Docker设置为Windows服务,您需要启动:
Start-Service docker
拉动 Windows Base Images
您在Windows Server 2019上运行的任何Docker容器都将基于Windows Server Core或Nano Server。您需要他们的image。请注意,基础 image现在托管在Microsoft的容器注册表MCR上:
docker image pull mcr.microsoft.com/windows/servercore:1809docker image pull mcr.microsoft.com/windows/nanoserver:1809
与Windows Server 2016版本相比,这些image很小。Windows Server Core从超过10GB缩小到1.5GB下载,而Nano Server从超过1GB缩小到90MB下载!
(可选)拉取 .NET 核心 image
.NET核心团队在Windows Server 2019发布后立即发布了其SDK和运行时image的版本。现在,您可以立即启用,并在2019年开始运行您的.NET核心应用程序(希望.NET Framework SDK、ASP.NET和SQL Server image很快发布。)
docker image pull microsoft/dotnet:2.1-sdk-nanoserver-1809docker image pull microsoft/dotnet:2.1-aspnetcore-runtime-nanoserver-1809
上游Docker image仍在Docker Hub上,只有基础Windows 2019 image在MCR上。
试试看
我推送了我的.NET Core Whoami image的更新版本,因此您可以尝试在Windows Server Core 2019容器中运行ASP.NET Core 2.1:
docker container run -d -p 8080:80 sixeyed/whoami-dotnet:nanoserver-1809
Docker在Windows Server 2019中的一个增强功能是现在可以使用环回地址,因此您可以使用服务器上的localhost访问此容器,并使用来自外部计算机的相同发布端口:
在Swarm模式中……
我将发布一个更详细的解释,说明在Windows Server 2019中你可以用Docker做什么,但在Windows Server 2016中不能做到,这里还有一件事:Windows Server 2019现在支持进入网络用于Docker Swarm模式。这意味着您可以在一台服务器上运行多个容器,所有容器都在同一端口上侦听,Docker将在容器之间对传入请求进行负载平衡。
在我的多元化课程:管理Docker Swarm模式集群中的负载平衡和规模中有更多的细节。
将服务器切换到单节点群:
docker swarm init --advertise-addr 127.0.0.1
现在将whoami应用程序部署为一个Swarm服务,具有多个副本和一个已发布的端口:
docker service create ` --publish 8070:80 ` --replicas 5 ` sixeyed/whoami-dotnet:nanoserver-1809
现在,当您从外部浏览到VM时,Docker将在托管该服务的五个容器之间对请求进行负载平衡:
还有更多
Windows Server 2019是Docker对容器功能的改进。Windows Server 2016对于生产来说仍然是完美的,但是2019使Windows容器更接近于与Linux容器的功能特性,并且解决了一些在2016年棘手的问题。
下一件重要的事是Kubernetes的Windows支持,预计将在今年年底前上市 :)
点击