手把手教您在 Windows Server 2019 上使用 Docker

简介: 现在,您可以直接用 Windows Server 来运行“纯”Docker 容器,其中所有的容器进程都可以直接在主机操作系统上运行。

screenshot

出品丨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 核心的安装方式:

screenshot

我将 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 访问此容器,并使用外部计算机上相同的已发布端口:

screenshot


在 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将在托管该服务的五个容器之间对请求进行负载均衡:

screenshot


不止于此

Windows Server 2016 仍然非常适合生产,但是 Windows Server 2019 使 Windows 容器更接近于 Linux 容器的特性,并且解决了 2016 中的一些棘手问题。

相关文章
|
1月前
|
网络安全 虚拟化 Windows
windows 11安装openSSH server 遇到的"kex_exchange_identification: read: Connection reset"问题
windows 11安装openSSH server 遇到的"kex_exchange_identification: read: Connection reset"问题
|
14天前
|
关系型数据库 MySQL 数据库
docker启动mysql多实例连接报错Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’
docker启动mysql多实例连接报错Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’
60 0
|
2月前
|
PHP Windows
【Azure App Service for Windows】 PHP应用出现500 : The page cannot be displayed because an internal server error has occurred. 错误
【Azure App Service for Windows】 PHP应用出现500 : The page cannot be displayed because an internal server error has occurred. 错误
|
2月前
|
前端开发 PHP 开发者
React Server Component 使用问题之怎么使用Docker运行PHP应用
React Server Component 使用问题之怎么使用Docker运行PHP应用
|
2月前
|
Docker 容器
【Azure 应用服务】App Server 部署后,Docker报错,找不到8080端口
【Azure 应用服务】App Server 部署后,Docker报错,找不到8080端口
|
2月前
|
Linux 虚拟化 Docker
深入了解Windows安装Docker
【8月更文挑战第22天】深入了解Windows安装Docker
105 0
|
2月前
|
Java Linux Docker
【zookeeper 第二篇章】windows、linux、docker-compose 安装 zookeeper
本文介绍Zookeeper在不同环境下的安装方法。Linux安装需备好JDK,下载并解压Zookeeper后,复制`zoo_sample.cfg`为`zoo.cfg`,最后运行`zkServer.sh start`启动服务。Windows安装类似,通过`zkServer.bat`启动。使用Docker-Compose则需编写配置文件,并通过`docker-compose up -d`后台启动容器。
50 0
|
2月前
|
开发框架 .NET API
Windows Server 2022 安装IIS 报错 访问临时文件夹 C:\WINDOWS\TEMP\3C 读取/写入权限 错误: 0x80070005
Windows Server 2022 安装IIS 报错 访问临时文件夹 C:\WINDOWS\TEMP\3C 读取/写入权限 错误: 0x80070005
96 0
|
2月前
|
Docker Windows 容器
Windows 2016 安装 Docker
Windows 2016 安装 Docker
16 0
|
2月前
|
Linux Docker Windows
Windows——Docker拉取Windows Server镜像
Windows——Docker拉取Windows Server镜像
114 0