在windows server 2019上部署docker容器,使用docker运行linux服务?

在 Windows Server 2019 上部署 Docker 并运行 Linux 容器是完全可行的,但需要注意几个关键前提和步骤。Windows Server 2019 本身支持两种 Docker 模式:Windows 容器(运行 Windows 应用)和 Linux 容器(运行 Linux 应用)。要运行 Linux 服务,必须启用 Linux 容器模式

以下是完整的操作指南:


✅ 前提条件

  1. 操作系统版本

    • 必须是 Windows Server 2019 (1809 或更高版本),且已安装最新的累积更新。
    • 建议通过 winver 或 PowerShell 检查版本号。
  2. 启用 Hyper-V 或 WSL2(推荐 WSL2)

    • 传统方式:使用 Hyper-V 虚拟机 作为 Linux 容器运行时(默认行为)。
    • 现代方式(更轻量、性能更好):使用 WSL2 + Docker Desktop for Windows(需确认服务器是否支持)。

      ⚠️ 注意:Docker Desktop for Windows 通常用于桌面版 Windows,在 Windows Server 上官方不支持直接安装 Docker Desktop。因此,生产环境推荐使用原生 Docker Engine for Windows + Hyper-V 后端

  3. 安装 Docker Engine for Windows
    微软提供了适用于 Windows Server 的 Docker Engine 安装包(非 Docker Desktop)。


🛠️ 步骤详解

1. 启用必要功能

以管理员身份打开 PowerShell,执行:

# 启用 Hyper-V 相关功能(若未启用)
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

# 启用容器功能
Enable-WindowsOptionalFeature -Online -FeatureName Containers -All

# 重启系统(必须)
Restart-Computer

💡 如果计划使用 WSL2 后端(实验性/非官方),需额外安装 WSL2 内核更新,但Windows Server 上 WSL2 支持有限且不推荐用于生产

2. 下载并安装 Docker Engine for Windows

访问微软官方仓库获取最新稳定版:

🔗 https://github.com/microsoft/Docker-for-Windows
或直接下载 MSI 安装包(搜索 "Docker Engine for Windows Server")

典型安装命令(假设已下载 docker-engine.msi):

msiexec /i docker-engine.msi ADDLOCAL="DockerEngine" /quiet

安装完成后,启动 Docker 服务:

Start-Service docker
Set-Service -Name docker -StartupType Automatic

验证安装:

docker version

应显示 Client 和 Server 信息,其中 Server OS 为 Linux(表示已切换至 Linux 容器模式)。

🔍 如何确认是 Linux 容器?
运行 docker info,查看 Server VersionOSType 字段:

OSType: linux

3. 拉取并运行 Linux 容器

例如,运行一个 Nginx 服务:

docker pull nginx:latest
docker run -d --name my-nginx -p 8080:80 nginx:latest

测试访问:
浏览器打开 http://<your-server-ip>:8080,应看到 Nginx 欢迎页。


⚠️ 重要注意事项

项目 说明
容器类型 默认安装后可能处于 Windows 容器模式,需手动切换或确保安装时选择了 Linux 支持。可通过 docker run --os=linux ... 强制指定。
网络配置 Linux 容器使用 NAT 网络,宿主机 IP 需正确映射端口(如 -p 8080:80)。
权限问题 某些 Linux 服务需要 root 权限,确保容器内用户配置合理。
性能 Hyper-V 模式下有轻微虚拟化开销;WSL2 更快但非官方支持。
安全组/防火墙 记得在 Windows Server 防火墙中放行对应端口(如 8080)。

🔄 可选:切换到 WSL2 后端(高级用户)

如果你希望获得更好的性能,可尝试以下方案(仅限测试环境):

  1. 安装 WSL2:
    wsl --install -d Ubuntu
  2. 将 Docker 后端改为 WSL2(需在 Docker 配置文件中设置):
    编辑 %ProgramData%dockerconfigdaemon.json,添加:

    {
     "registry-mirrors": [],
     "features": {
       "wsl2": true
     }
    }

    ❗ 此方法在 Windows Server 上不稳定且无官方支持,不建议用于生产。


✅ 总结

在 Windows Server 2019 上运行 Linux 容器的标准流程是:

  1. 启用 Hyper-V 和 Containers 功能;
  2. 安装 Docker Engine for Windows(非 Docker Desktop);
  3. 确认 docker info 显示 OSType: linux
  4. 使用 docker run 拉取并运行 Linux 镜像。

这样即可成功部署 Linux 服务(如 Nginx、MySQL、Node.js 等)于 Windows Server 之上。

如需进一步帮助(如配置持久化存储、网络桥接、Kubernetes 集成等),欢迎继续提问!

未经允许不得转载:云计算 » 在windows server 2019上部署docker容器,使用docker运行linux服务?