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

相关推荐
JELEE.1 小时前
Django登录注册完整代码(图片、邮箱验证、加密)
前端·javascript·后端·python·django·bootstrap·jquery
QX_hao4 小时前
【Go】--反射(reflect)的使用
开发语言·后端·golang
小坏讲微服务4 小时前
Docker-compose 搭建Maven私服部署
java·spring boot·后端·docker·微服务·容器·maven
yuuki2332334 小时前
【数据结构】用顺序表实现通讯录
c语言·数据结构·后端
你的人类朋友5 小时前
【Node】手动归还主线程控制权:解决 Node.js 阻塞的一个思路
前端·后端·node.js
史不了5 小时前
静态交叉编译rust程序
开发语言·后端·rust
码事漫谈6 小时前
C++中的多态:动态多态与静态多态详解
后端
码事漫谈6 小时前
单链表反转:从基础到进阶的完整指南
后端
与遨游于天地6 小时前
Spring解决循环依赖实际就是用了个递归
java·后端·spring