出品丨Docker公司(ID:docker-cn)
编译丨小东
每周一、三、五,与您不见不散!
Windows Server 2019 是 Windows Server 下一款长期提供支持的产品,并且现在它已经可以供大家使用了!Windows Server 2019 为运行 Docker Windows 容器提供了一些非常有用的改进。现在,您可以直接用 Windows Server 来运行“纯”Docker 容器,其中所有的容器进程都可以直接在主机操作系统上运行。您可以在 Windows 10 上使用相同的 Docker 镜像、Dockerfiles 和 docker 命令。
注:在 Windows 10 上,Docker Desktop 是最简单的入门方式。
如果您想查看最新版本的 Windows Server 并运行 Docker 容器,那么您需要做以下工作。
获取 Windows Server 2019
您可以立即下载 ISO 来安装 Windows Server 2019,如果您有 Visual Studio 订阅,也可以安装Windows Server 2019,如果没有,则可以下载为期 180 天的评估版(浏览 https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-2019 获取下载地址)。已经部署了 Windows Server 2019 的虚拟机将很快在 Azure 上提供。
2019 的安装过程与以前的 Windows Server 版本相同,从 ISO 启动 VM 并开始安装。我更喜欢没有 GUI 核心的安装方式:
我将 Server 2019 安装到运行在 Windows 10 计算机上的 Hyper-V VM 上,VM磁盘存储在外部 SSD 上。只需几分钟就可以完成设置,并且运行速度非常快(即使只分配了 4GB 的内存)。
注:您还可以使用 ISO 将以前的 Windows Server 版本升级到 2019。
连接到服务器
当您用 RDP 进入到Windows Server Core机器时,您只看到一个命令提示符。 第一次连接时,您需要设置默认 Administrator account 的密码。 然后我喜欢将 PowerShell 设置为默认命令 shell,因此每当您使用 RDP 就会进入到 PowerShell 会话:
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon' -name Shell -Value 'PowerShell.exe -noExit'
配置 Windows 功能
要运行容器,您还需要启用容器功能,对于非生产 VM,我还禁用了 Windows Defender 功能来停止它消耗 CPU 周期。 您需要执行以下步骤后重新启动:
Install-WindowsFeature -Name Containers
Uninstall-WindowsFeature Windows-Defender
Restart-Computer -Force
配置 Windows 更新
首先需要确保版本是最新的,之后我会禁用自动更新功能,只有在我需要时才会进行的更新。Windows Server Core 中没有 GUI,因此请运行 sconfig 然后选择:
- 选项5,将 Windows 更新设置为手动;
- 选项7,启用对服务器的远程桌面访问;
- 选项6,下载并安装所有更新;
然后就可以安装Docker了。
在 Window Server 2019 上安装 Docker
Windows Server 许可包含了 Docker Enterprise 的许可成本,因此您可以运行 Docker Enterprise 版本,并为 Microsoft 和 Docker 的容器提供生产支持。
最新的 Docker Enterprise 引擎版本为 18.03,您可以使用 PowerShel l 来进行安装:
Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
Install-Package -Name docker -ProviderName DockerMsftProvider -Force -RequiredVersion 18.03
这会将 Docker 设置为一个 Windows 服务,您需要启动它:
Start-Service docker
下载 Windows 基础镜像
您在 Windows Server 2019 上运行的任何 Docker 容器都将基于 Windows Server Core 或 Nano Server。 您将需要这两个镜像,并注意基本镜像现在托管在 Microsoft 的容器镜像仓库(MCR)上:
docker image pull mcr.microsoft.com/windows/servercore:1809
docker image pull mcr.microsoft.com/windows/nanoserver:1809
注:与 Windows Server 2016 版本相比,这些镜像变得很小。 Windows Server Core 从 10GB 以上缩减到 1.5GB,Nano Server 从 1GB 缩小到 90MB!
下载 .NET 核心镜像
Windows Server 2019 一经推出,.NET Core团队就发布了 SDK 和运行时镜像。您可以立即启用它们并在 2019 中开始运行 .NET Core 应用程序。
docker image pull microsoft/dotnet:2.1-sdk-nanoserver-1809
docker image pull microsoft/dotnet:2.1-aspnetcore-runtime-nanoserver-1809
上游 Docker 镜像仍在 Docker Hub 上,只有基础的 Windows 2019 镜像在 MCR 上
试试看!
我推出了我的 .NET Core“whoami”镜像的更新版本,因此您也可以尝试在 Windows Server Core 2019 容器中运行 ASP.NET Core 2.1:
docker container run -d -p 8080:80 sixeyed/whoami-dotnet:nanoserver-1809
Windows Server 2019 中 Docker 的一个增强功能是 loopback 地址现在可以使用了,因此您可以使用服务器上的 localhost 访问此容器,并使用外部计算机上相同的已发布端口:
在 Swarm 模式中......
Windows Server 2019 现在支持 Docker swarm 模式的入口网络。 这意味着您可以在一台服务器上运行多个容器,所有容器都在同一端口上侦听,Docker 将在容器之间对传入请求进行负载均衡。
将服务器切换到单节点集群:
docker swarm init --advertise-addr 127.0.0.1
现在将“whoami”应用程序部署为集群服务,具有多个副本和一个已发布的端口:
docker service create `
--publish 8070:80 `
--replicas 5 `
sixeyed/whoami-dotnet:nanoserver-1809
现在,当您从外部浏览到 VM 时,Docker将在托管该服务的五个容器之间对请求进行负载均衡:
不止于此
Windows Server 2016 仍然非常适合生产,但是 Windows Server 2019 使 Windows 容器更接近于 Linux 容器的特性,并且解决了 2016 中的一些棘手问题。