5 分钟搞定 Windows Server Docker 安装

Docker 在 Windows Server 2019/2022 上的完整安装指南

📋 系统要求

组件 要求
操作系统 Windows Server 2019/2022 (1809 或更高版本)
权限 管理员权限 (PowerShell/CMD)
系统资源 至少 4GB RAM, 10GB 可用磁盘空间
网络访问 可访问互联网 (在线安装) 或准备离线安装包

🔧 安装前准备

1. 启用容器功能

shell 复制代码
# 安装容器功能
Install-WindowsFeature -Name Containers -Restart
# 如果重启失败,请手动重启服务器
# Restart-Computer -Force

2. 检查系统兼容性

shell 复制代码
# 验证系统是否满足容器要求
Get-ComputerInfo | Select-Object OsVersion, OsHardwareAbstractionLayer, OsName

🚀 安装 Docker

方法一:在线安装 (推荐)

shell 复制代码
# 1. 设置 TLS 版本 (解决 SSL/TLS 错误)
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 -bor [Net.SecurityProtocolType]::Tls13
# 2. 安装 Docker 提供程序
Install-Module -Name DockerMsftProvider -Repository PSGallery -Force -AllowClobber
# 3. 安装 Docker 引擎
Install-Package -Name Docker -ProviderName DockerMsftProvider -Force
# 4. 重启服务器
Restart-Computer -Force

方法二:离线安装

  1. 下载 Docker EE

  2. 手动安装

    shell 复制代码
    # 解压安装包到指定目录 (示例: D:\Docker)
    Expand-Archive -Path "docker-24.0.7.zip" -DestinationPath "D:\Docker"
    
    # 添加到系统 PATH
    [Environment]::SetEnvironmentVariable("Path", $env:Path + ";D:\Docker", "Machine")
    
    # 注册 Docker 服务
    D:\Docker\dockerd.exe --register-service
    
    # 启动 Docker 服务
    Start-Service Docker

✅ 验证安装

powershell 复制代码
# 检查 Docker 版本
docker --version
# 测试 Docker 运行
docker run --rm mcr.microsoft.com/windows/nanoserver:ltsc2022 cmd /c "echo Docker 安装成功!"
# 检查服务状态
Get-Service Docker | Select-Object Status, Name

预期输出:

shell 复制代码
Docker version 24.0.7, build a5d4de5
Docker 安装成功!
Status     Name               DisplayName
------     ----               -----------
Running    Docker             Docker

⚙️ 基本配置

1. 修改数据存储目录

powershell 复制代码
# 停止 Docker 服务
Stop-Service Docker
# 创建配置文件
@"
{
    "data-root": "D:\\docker-data",
    "storage-driver": "overlay2",
    "log-opts": {
        "max-size": "10m",
        "max-file": "3"
    }
}
"@ | Set-Content -Path "C:\ProgramData\docker\config\daemon.json"
# 创建数据目录
New-Item -Path "D:\docker-data" -ItemType Directory -Force
# 启动 Docker 服务
Start-Service Docker

2. 配置镜像加速 (国内用户)

shell 复制代码
# 编辑配置文件
@"
{
    "registry-mirrors": [
        "https://dockerhub.azk8s.cn",
        "https://reg-mirror.qiniu.com",
        "https://mirror.ccs.tencentyun.com"
    ],
    "experimental": false,
    "max-concurrent-downloads": 10,
    "max-concurrent-uploads": 5
}
"@ | Set-Content -Path "C:\ProgramData\docker\config\daemon.json"
# 重启 Docker 服务
Restart-Service Docker

3. 配置 Docker 开机自启

powershell 复制代码
# 设置服务为自动启动
Set-Service -Name Docker -StartupType Automatic
# 确认服务状态
Get-Service Docker | Select-Object Name, StartType, Status

🛠️ 常用命令参考

命令类别 命令 用途
基础命令 docker --version 检查 Docker 版本
docker info 显示 Docker 系统信息
镜像管理 docker images 列出本地镜像
docker pull <镜像名> 拉取镜像
docker rmi <镜像ID> 删除镜像
容器管理 docker ps 列出运行中的容器
docker ps -a 列出所有容器
docker run -d <镜像名> 后台运行容器
docker stop <容器ID> 停止容器
docker start <容器ID> 启动容器
docker rm <容器ID> 删除容器
容器交互 docker exec -it <容器ID> cmd 进入容器
docker logs <容器ID> 查看容器日志
docker inspect <容器ID> 检查容器配置

🔍 故障排除

常见问题及解决方案

问题 可能原因 解决方案
Docker 服务无法启动 权限不足/端口冲突/配置错误 1. 以管理员身份运行 2. 检查端口 2376 是否被占用 3. 检查 daemon.json 配置
镜像拉取失败 网络问题/镜像源配置错误 1. 配置国内镜像加速 2. 检查网络连接 3. 尝试手动拉取
容器无法启动 资源不足/镜像不兼容 1. 增加系统资源 2. 检查镜像与系统版本兼容性 3. 查看详细错误日志
Docker 命令无响应 服务未正确启动 1. 检查服务状态 2. 重启 Docker 服务 3. 重新安装 Docker

高级诊断命令

powershell 复制代码
# 查看 Docker 事件日志
docker events --since="1h"
# 检查 Docker 系统资源使用
docker system df
# 查看详细错误日志
Get-WinEvent -LogName "Docker" | Where-Object {$_.LevelDisplayName -eq "Error"} | Format-List

📚 参考资源

  1. Docker 官方文档
  2. Windows 容器官方指南
  3. Docker Desktop for Windows
  4. Docker Hub 官方镜像

🎯 后续建议

  1. 安全配置
    • 配置 Docker 用户认证
    • 限制容器资源使用
    • 定期更新 Docker 版本
  2. 性能优化
    • 调整容器内存和 CPU 限制
    • 使用适当的存储驱动
    • 配置日志轮转
  3. 备份策略
    • 定期备份镜像和容器
    • 备份 Docker 配置文件
    • 制定灾难恢复计划

✅ 安装完成! 您现在可以在 Windows Server 上使用 Docker 了。如需进一步帮助,请查看官方文档或提供具体的错误信息。

相关推荐
IT_陈寒14 小时前
🚀 Vite 5个鲜为人知的性能优化技巧:让你的构建速度提升300%
前端·人工智能·后端
Victor35615 小时前
Redis(37)Redis集群中的主节点和从节点是如何协作的?
后端
Victor35615 小时前
Redis(36)Redis集群的槽(Slot)是如何分配的?
后端
向上的车轮1 天前
Odoo与Django 的区别是什么?
后端·python·django·odoo
完美世界的一天1 天前
Golang 面试题「中级」
开发语言·后端·面试·golang
小明说Java1 天前
解密双十一电商优惠券批量下发设计与实现
后端
bobz9651 天前
virtio-networking 5: 介绍 vDPA kernel framework
后端
橙子家1 天前
接口 IResultFilter、IAsyncResultFilter 的简介和用法示例(.net)
后端
bobz9651 天前
Virtio-networking: 2019 总结 2020展望
后端
AntBlack1 天前
每周学点 AI : 在 Modal 上面搭建一下大模型应用
后端