在windows server 2019上部署docker容器?

在 Windows Server 2019 上部署 Docker 是完全可行的,但需要明确一个核心前提:Docker 在 Windows 上的运行机制与 Linux 原生环境不同。Windows Server 2019 默认并不直接运行 Linux 内核,因此它依赖的是 Moby 项目(Docker 的开源基础)配合 Hyper-V 容器技术WSL 2(如果已安装并配置)来提供隔离环境。

以下是基于生产环境稳定性的标准部署方案,分为“推荐方案”和“传统方案”两种路径。

方案一:使用 WSL 2 + Docker Desktop(当前最推荐)

虽然这是桌面版常用的方式,但在 Windows Server 2019 数据中心版中,只要开启了 Hyper-V 功能并安装了 WSL 2 内核,同样可以完美运行。这种方式性能最好,支持 Linux 容器,且资源开销相对较小。

前置条件检查:

  1. 确保服务器已开启 Hyper-V 角色。
  2. 系统版本需为 Windows Server 2019 或更高(建议更新到最新累积补丁)。
  3. 网络配置允许访问网络以下载镜像。

操作步骤:

  1. 启用 WSL 2 功能
    以管理员身份打开 PowerShell,依次执行以下命令:

    # 启用 WSL 功能
    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    
    # 启用虚拟机平台功能(关键,用于 WSL 2)
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    
    # 重启服务器
    Restart-Computer
  2. 安装 WSL 2 内核更新包
    前往微软官网下载 wsl_update_x64.msi 安装包进行安装,安装后再次重启。

  3. 安装并设置默认发行版
    在 PowerShell 中执行:

    wsl --install -d Ubuntu-20.04
    # 或者指定其他版本,如 Debian

    注意:首次运行会提示你创建用户名和密码,请妥善记录。

  4. 将默认版本设置为 WSL 2

    wsl --set-default-version 2
  5. 在 WSL 内部安装 Docker Engine
    进入刚安装的 Ubuntu 子系统(输入 wsl 或点击开始菜单中的 Ubuntu),然后在其中执行标准的 Linux Docker 安装流程:

    # 更新源
    sudo apt-get update
    
    # 安装依赖
    sudo apt-get install ca-certificates curl gnupg lsb-release
    
    # 添加官方 GPG 密钥
    mkdir -p /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    
    # 设置仓库
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
    # 安装 Docker Engine
    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  6. 验证运行

    sudo docker run hello-world

优点:启动速度快,内存占用低,兼容绝大多数 Linux 生态工具链。
缺点:需要管理两个环境(宿主机和 WSL),部分对 Windows API 有强依赖的 .NET Framework 应用可能需要特殊处理。


方案二:使用 Docker Desktop for Windows(企业级容器化方案)

如果你希望在一个统一的界面中管理,且不需要深入底层 Linux 环境,可以使用 Docker Desktop for Windows。它在 Windows Server 2019 上通过 Hyper-V 模式运行。

注意事项

  • Docker Desktop 的免费许可证主要面向个人开发者和小型团队(员工少于 100 人且年收入低于 1000 万美元)。如果是大规模商业部署,请务必确认授权合规性,否则建议使用 Docker EE (现称 Docker Enterprise)Moby 自行构建。
  • 该方案对 CPU 虚拟化要求较高,需确保 BIOS 中开启了 VT-x/AMD-V。

操作步骤:

  1. 开启 Hyper-V
    在“服务器管理器” -> “添加角色和功能”中,勾选 Hyper-V 角色。这将导致服务器必须重启。

  2. 下载并安装
    访问 Docker 官网下载 Docker Desktop for Windows 安装包。

    • 安装过程中,选择 Use the Hyper-V backend(使用 Hyper-V 后端)。
    • 安装完成后,首次启动会自动下载所需的 Linux 发行版(通常是 Ubuntu)。
  3. 配置与运行
    启动 Docker Desktop 图标,等待状态栏显示绿色“Running”。此时你可以在命令行中使用 docker 命令。

    docker run hello-world

优点:图形化管理界面直观,支持 Windows 容器和 Linux 容器切换,集成度高。
缺点:资源消耗较大(常驻后台进程多),在纯服务器环境下可能显得臃肿,且受限于许可协议。


关于 Windows 容器的特别说明

除了上述 Linux 容器方案,Windows Server 2019 原生支持 Windows 容器。如果你的应用是基于 .NET Framework 或特定 Windows 二进制文件,且不想依赖 WSL,可以直接使用此模式。

特点

  • 轻量级隔离:共享宿主机的内核,启动极快。
  • 镜像类型:必须使用 microsoft/windowsservercorenanoserver 作为基础镜像。
  • 兼容性:不支持 Linux 系统调用,无法运行 Python、Node.js (Linux 版) 等依赖 Linux 内核的工具。

简单测试

# 拉取 Windows 核心镜像
docker pull mcr.microsoft.com/windows/servercore:ltsc2019

# 运行
docker run -it mcr.microsoft.com/windows/servercore:ltsc2019 cmd

生产环境建议与合规提示

  1. 镜像来源安全
    在国内环境下,建议配置国内云厂商(如阿里云、腾讯云、华为云)提供的 私有镜像提速器公共镜像提速点。这不仅能显著提升拉取速度,还能规避网络波动带来的风险。

    • 例如:在 /etc/docker/daemon.json (WSL 内) 或 Docker Desktop 设置中配置 registry-mirrors
  2. 权限管理
    不要以 Administrator 身份长期运行 Docker 守护进程。建议创建专用的服务账号,并将用户加入 docker 组,遵循最小权限原则。

  3. 存储与网络

    • 存储:生产环境中,建议将 Docker 的数据目录(C:ProgramDataDocker)迁移至非系统盘(如 D 盘),防止日志或镜像填满系统盘导致服务崩溃。
    • 网络:若涉及公网访问,务必在 Windows 防火墙层面配置规则,仅开放必要的端口(如 80, 443, 22 等),避免暴露管理端口(2375/2376)。
  4. 合规性声明
    所有软件部署行为应严格遵守国家网络安全法及相关法律法规。严禁利用容器技术进行非法数据采集、攻击他人系统或传播违规内容。同时,请确保所使用的操作系统和 Docker 版本均处于官方支持的维护周期内,及时修补安全漏洞。

总结
对于大多数现代 IT 架构,方案一(WSL 2) 是性价比最高、运维最灵活的选择;如果是传统的 .NET 遗留系统迁移,则优先考虑 Windows 容器 模式;若团队规模小且偏好图形化操作,Docker Desktop 也是可行方案,但需注意授权问题。无论选择哪种,务必做好数据持久化和网络隔离配置。

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