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 了。如需进一步帮助,请查看官方文档或提供具体的错误信息。

相关推荐
苏三的开发日记8 分钟前
linux端进行kafka集群服务的搭建
后端
苏三的开发日记26 分钟前
windows系统搭建kafka环境
后端
爬山算法36 分钟前
Netty(19)Netty的性能优化手段有哪些?
java·后端
Tony Bai37 分钟前
Cloudflare 2025 年度报告发布——Go 语言再次“屠榜”API 领域,AI 流量激增!
开发语言·人工智能·后端·golang
想用offer打牌1 小时前
虚拟内存与寻址方式解析(面试版)
java·后端·面试·系统架构
無量1 小时前
AQS抽象队列同步器原理与应用
后端
9号达人1 小时前
支付成功订单却没了?MyBatis连接池的坑我踩了
java·后端·面试
用户497357337982 小时前
【轻松掌握通信协议】C#的通信过程与协议实操 | 2024全新
后端
草莓熊Lotso2 小时前
C++11 核心精髓:类新功能、lambda与包装器实战
开发语言·c++·人工智能·经验分享·后端·nginx·asp.net
追逐时光者2 小时前
精选 8 个 .NET 开发实用的类库,效率提升利器!
后端·.net