在 Windows Server 上部署 Docker 涉及不同的方法,具体取决于 Windows Server 的版本。以下是详细步骤和注意事项:
1. 确认 Windows Server 版本
- Windows Server 2016/2019/2022:支持两种容器类型:
- Windows 容器:原生运行基于 Windows 的容器(如 IIS、.NET Framework)。
- Linux 容器:通过 Hyper-V 隔离运行 Linux 容器(需启用 Hyper-V 角色)。
- Windows Server Core 或 Nano Server:推荐使用这些轻量级版本以减少资源占用。
2. 安装 Docker 的两种方式
方法一:使用 Docker EE(旧版,适用于 Server 2016/2019)
- 安装 Docker 企业版(已弃用,建议改用 Docker Desktop 或直接安装 Docker Engine):
Install-Module -Name DockerMsftProvider -Force Install-Package -Name docker -ProviderName DockerMsftProvider -Force Restart-Computer
方法二:直接安装 Docker Engine(推荐)
- 下载 Docker 二进制包:
- 从 Docker 官方文档 下载
dockerd.exe
和docker.exe
。
- 从 Docker 官方文档 下载
- 手动配置服务:
- 将二进制文件放入
C:Program FilesDocker
。 - 创建服务:
New-Service -Name "Docker" -BinaryPathName '"C:Program FilesDockerdockerd.exe" --run-service' -StartupType Automatic Start-Service Docker
- 将二进制文件放入
3. 启用容器功能
- 安装容器相关 Windows 功能:
Install-WindowsFeature -Name Containers Restart-Computer
- 对于 Linux 容器(需 Hyper-V):
Install-WindowsFeature -Name Hyper-V -IncludeManagementTools
4. 验证安装
docker version
docker run hello-world:nanoserver # Windows 容器测试
docker run --rm -it alpine ls # Linux 容器测试(需切换模式)
5. 切换容器模式(Windows/Linux)
- 切换到 Linux 容器模式:
& $Env:ProgramFilesDockerDockerDockerCli.exe -SwitchLinuxEngine
- 切换回 Windows 容器模式:
& $Env:ProgramFilesDockerDockerDockerCli.exe -SwitchWindowsEngine
6. 常见问题解决
- 错误:
Failed to start daemon
确保dockerd
以管理员权限运行,并检查防火墙是否阻止端口 2375/2376。 - Linux 容器启动失败
确认已启用 Hyper-V 并开启 BIOS 中的虚拟化支持。 - 镜像下载慢
配置国内镜像源(如阿里云):// 编辑 `C:ProgramDatadockerconfigdaemon.json` { "registry-mirrors": ["https://<your-mirror>.mirror.aliyuncs.com"] }
7. 生产环境建议
- 使用 Docker Compose:
通过docker-compose.yml
管理多容器应用。 - 持久化存储:
使用卷(Volumes)挂载 Windows 目录:docker run -v C:hostpath:C:containerpath ...
- 监控与日志:
集成 ELK 或 Prometheus 监控容器状态。
8. 替代方案(Windows Server 2022 及更新版本)
- Windows Subsystem for Linux (WSL 2):
在 Windows Server 上安装 WSL 2 后运行原生 Linux Docker,性能更优。
通过以上步骤,您可以在 Windows Server 上成功部署 Docker。根据实际需求选择 Windows 或 Linux 容器,并注意版本兼容性。