在windows server 2019上部署docker容器?

在 Windows Server 2019 上部署 Docker 容器,首先需要明确一个关键前提:Windows Server 2019 原生支持的是“Windows 容器”(Windows Containers)

如果你需要运行 Linux 容器(Linux Containers),则必须启用 WSL 2 或安装 Docker Desktop for Windows(但这通常用于开发环境,生产服务器更推荐直接使用 Windows 容器)。

以下是针对生产环境的两种主要方案:


方案一:使用 Windows 容器(推荐用于生产环境)

这是 Windows Server 2019 最原生的方式,无需额外的虚拟化层,性能最好。

1. 前置条件与角色安装

确保服务器已安装 .NET Framework 4.7.2 或更高版本(通常默认已安装)。
打开 PowerShell(以管理员身份运行),执行以下命令安装容器功能:

# 启用容器功能
Install-WindowsFeature -Name Container -IncludeManagementTools

2. 安装 Docker Engine

微软官方提供了 docker-engine 的 MSI 安装包。

  • 下载地址:访问 Microsoft Container Registry 或搜索 "Docker CE for Windows Server"。
  • 步骤
    1. 下载 .msi 安装包(例如 docker-ce.msi)。
    2. 双击运行安装程序,按照向导完成安装。
    3. 安装完成后,服务会自动启动。

注意:如果是较新的 Docker 版本,可能需要先卸载旧版。可以通过 Get-WindowsPackage 查看并移除冲突包。

3. 验证安装

在 PowerShell 中运行:

docker version
docker run hello-world

如果看到 "Hello from Docker!" 且没有报错,说明 Windows 容器引擎已就绪。

4. 拉取和运行 Windows 镜像

由于是 Windows 环境,你需要拉取 Windows 基础镜像:

# 拉取最新的 Windows Server Core 镜像
docker pull mcr.microsoft.com/windows/servercore:ltsc2019

# 运行一个简单的 PowerShell 容器
docker run --rm -it mcr.microsoft.com/windows/servercore:ltsc2019 powershell

此时你将进入一个 Windows CMD/PowerShell 环境。


方案二:使用 WSL 2 运行 Linux 容器(适合混合环境)

如果你必须在 Windows Server 2019 上运行 Linux 容器(如 Nginx, Redis, Python Linux 版等),则需要启用 WSL 2 内核。

1. 启用 WSL 2 功能

以管理员身份运行 PowerShell:

# 启用 WSL 功能和虚拟机平台
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

# 重启服务器
Restart-Computer

2. 设置默认版本为 WSL 2

重启后,再次以管理员身份运行:

wsl --set-default-version 2

3. 安装 Linux 发行版(可选但推荐)

为了管理方便,建议安装 Ubuntu 作为 WSL 发行版:

wsl --install -d Ubuntu

首次运行会提示你设置用户名和密码。

4. 安装 Docker Engine (Linux 版)

在 WSL 2 的 Ubuntu 终端内,按照标准的 Ubuntu Docker 安装流程操作:

sudo apt-get update
sudo apt-get install docker.io
# 或者使用官方脚本
curl -fsSL https://get.docker.com | sh

之后即可像在普通 Linux 服务器上一样运行 Linux 容器。


常见问题与注意事项

  1. 网络模式

    • Windows 容器默认使用 nat 网络模式,宿主机端口映射可能不如 Linux 灵活。
    • 如果需要更复杂的网络配置,可能需要配置 transparentl2bridge 模式。
  2. 安全组与防火墙

    • 确保 Windows Server 的防火墙允许 Docker 相关的端口(通常是 TCP 2375, 2376 以及容器暴露的业务端口)。
    • 如果使用云服务商(如 Azure/AWS),别忘了在安全组规则中放行对应端口。
  3. 资源限制

    • Windows 容器共享宿主机的内核,因此对 CPU 和内存的限制不如 Linux 容器精细,但在大多数场景下足够使用。
  4. 长期支持 (LTSC)

    • 务必使用 ltsc2019 版本的镜像,避免使用 nanoserver 除非你有特殊需求,因为 servercore 兼容性更好且包含更多常用工具。

总结

  • 如果你的应用是 .NET Framework 或基于 Windows 的应用,请直接使用 方案一(Windows 容器)
  • 如果你的应用依赖 Linux 库 或必须是 Linux 环境,请使用 方案二(WSL 2 + Linux Docker)

如果你需要具体的某个应用(如 IIS, SQL Server, .NET Core API)的 Dockerfile 示例或部署脚本,请告诉我具体需求。

未经允许不得转载:云知识CLOUD » 在windows server 2019上部署docker容器?