Windows系统Docker使用教程
Windows系统Docker使用教程
本文档整合了 Windows 系统下 Docker Desktop 从安装、配置、使用到问题排查的全流程内容,覆盖 WSL 2 后端全场景,适配 Windows 10/11 64 位系统。
目录
[Docker Desktop 安装教程](#1-docker-desktop-安装教程)
[Docker Desktop 升级教程](#2-docker-desktop-升级教程)
[Docker Desktop 卸载教程](#3-docker-desktop-卸载教程)
[Docker 核心使用教程](#4-docker-核心使用教程)
[Docker 地址修改完整指南](#5-docker-地址修改完整指南)
[查看 Docker 运行后端类型](#6-查看docker运行后端类型)
[Docker Compose YAML 配置详解](#7-docker-compose-yaml-配置详解)
[Docker 常见问题排查手册](#8-docker-常见问题排查手册)
1. Docker Desktop 安装教程
1.1 前置准备与系统要求
系统与硬件最低要求
| 项目 | 最低要求 | 推荐配置 |
|---|---|---|
| 操作系统 | Windows 10 64 位 22H2(内部版本 19045+)/ Windows 11 64 位 22H2+ | Windows 11 专业版 23H2+ |
| CPU | 支持 SLAT 二级地址转换、Intel VT-x/AMD-V 虚拟化的 64 位处理器 | 4 核 8 线程及以上 |
| 内存 | 4GB 系统内存 | 8GB+ 内存 |
| 存储 | 10GB 可用空间 | SSD 20GB+ 可用空间 |
| 核心依赖 | 启用 WSL 2 或 Hyper-V | WSL 2 最新内核 |
关键前置检查与配置
步骤 1:确认硬件虚拟化已开启
按下
Ctrl+Shift+Esc打开任务管理器 → 切换到「性能」→「CPU」查看「虚拟化」是否显示已启用
若显示禁用:重启电脑,按 Del/F2/F10(依主板 / 品牌而定)进入 BIOS,开启
Intel Virtual Technology (VT-x)或AMD-V,保存重启
步骤 2:安装并启用 WSL 2
以管理员身份打开 PowerShell / 终端,执行以下命令:
1 | # 一键安装WSL 2(自动启用相关Windows功能、下载内核、设置默认版本) |
执行完成后重启电脑,确保 WSL 2 组件生效。
1.2 详细安装教程
方式 1:图形化界面安装(推荐新手)
下载安装包
访问Docker 官方下载页,点击Download for Windows,获取最新版安装包Docker Desktop Installer.exe。执行安装
双击安装包,在安装向导中:必选:勾选
Use WSL 2 instead of Hyper-V(默认勾选,家庭版系统仅支持此选项)可选:勾选
Add shortcut to desktop创建桌面快捷方式点击
OK,等待安装完成(约 2-5 分钟)安装完成后,点击
Close and restart按需重启电脑。
首次启动与协议确认
从开始菜单 / 桌面打开 Docker Desktop,首次启动会弹出服务协议,勾选接受协议后点击Accept;等待底部状态栏鲸鱼图标从Starting变为Running,即启动成功。安装验证
打开 PowerShell/CMD,执行以下命令,输出版本号即安装成功:1
2
3
4
5
6# 查看Docker版本
docker --version
docker compose version
# 运行测试容器,正常拉取并输出hello world即环境完全正常
docker run hello-world
方式 2:命令行静默安装(适合批量部署)
以管理员身份打开 PowerShell,执行以下命令:
1 | # 下载安装包(可替换为最新版本链接) |
安装完成后,重启终端即可使用 docker 命令。
2. Docker Desktop 升级教程
2.1 重要前置:升级前数据备份
升级不会默认删除镜像、容器、卷数据,但为避免异常,建议关键数据提前备份:
1 | # 1. 备份本地镜像到tar包 |
恢复时可通过docker image load -i my-images.tar还原镜像。
2.2 升级方式
方式 1:自动升级(推荐)
Docker Desktop 默认开启自动更新检测,操作步骤:
打开 Docker Desktop,右上角若出现蓝色更新提示,点击进入更新页面
点击
Download update,等待后台下载更新包下载完成后,点击
Apply and restart,Docker 会自动完成升级并重启重启后,执行
docker --version验证版本是否更新成功。
可通过「设置」→「Software updates」自定义更新策略:
Automatically check for updates:开启更新检测(默认开启)Always download updates:后台自动下载更新包Automatically update components:自动更新 Compose、CLI 等组件(无需完整重启)
方式 2:手动覆盖升级
适用于自动升级失败、需跨大版本升级的场景:
关闭正在运行的 Docker Desktop(右键托盘图标→Quit Docker Desktop)
从 Docker 官网下载最新版安装包
双击安装包,执行安装(无需卸载旧版本,安装程序会自动覆盖升级)
安装完成后启动 Docker,所有原有镜像、容器、配置均会保留。
3. Docker Desktop 卸载教程
3.1 标准卸载(保留数据)
适用于临时卸载、后续可能重装的场景:
完全关闭 Docker Desktop(右键托盘图标→Quit Docker Desktop)
打开 Windows「设置」→「应用」→「已安装的应用」
在列表中找到
Docker Desktop,点击右侧三个点→「卸载」跟随卸载向导,点击确认,等待卸载完成。
也可通过命令行执行标准卸载:
1 | # 方式1:通过安装包卸载 |
3.2 彻底卸载(清除所有残留)
适用于重装报错、环境异常、完全清理的场景,步骤如下:
执行上述标准卸载步骤,完成主程序卸载
清理 WSL 2 相关分发(会删除所有镜像、容器、卷数据,不可逆)
1
2
3
4
5
6
7
8
9# 停止所有WSL实例
wsl --shutdown
# 注销Docker专用WSL分发
wsl --unregister docker-desktop
wsl --unregister docker-desktop-data
# 验证是否注销成功,无相关名称即完成
wsl -l -v删除残留文件目录
以管理员身份打开 PowerShell,执行以下命令删除所有残留目录:1
2
3
4
5
6
7
8
9
10# 删除程序安装目录
rm -rf "C:\Program Files\Docker"
rm -rf "C:\ProgramData\Docker"
rm -rf "C:\ProgramData\DockerDesktop"
# 删除用户缓存与配置
rm -rf "$env:LOCALAPPDATA\Docker"
rm -rf "$env:APPDATA\Docker"
rm -rf "$env:APPDATA\Docker Desktop"
rm -rf "$env:USERPROFILE.docker"清理环境变量与注册表(高级操作,谨慎执行)
环境变量:右键「此电脑」→「属性」→「高级系统设置」→「环境变量」,删除系统 / 用户变量中所有包含
DOCKER的变量项。注册表:按下
Win+R输入regedit打开注册表编辑器,删除以下路径(操作前建议备份注册表):Text 1
2
3HKEY_LOCAL_MACHINE\SOFTWARE\Docker Inc.
HKEY_CURRENT_USER\SOFTWARE\Docker Inc.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Docker
重启电脑,完成彻底卸载。
4. Docker 核心使用教程
4.1 国内镜像源配置(必做)
Docker 官方镜像源在国内访问受限,需配置国内加速源:
打开 Docker Desktop → 右上角「设置」→ 左侧「Docker Engine」
在右侧 JSON 配置中,添加
registry-mirrors字段,完整配置示例:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.1ms.run",
"https://mirror.ccs.tencentyun.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.xuanyuan.me",
"https://docker.xiaogenban1993.com"
]
}点击右下角「Apply & Restart」,等待 Docker 重启生效
验证配置是否成功,执行以下命令,输出中包含配置的镜像地址即生效:
1
docker info | findstr "Registry Mirrors"
4.2 核心概念速记
镜像(Image):容器的 “安装包 / 模板”,只读,包含程序运行所需的代码、环境、依赖,例如 nginx、mysql 镜像。
容器(Container):镜像运行后的实例,独立的运行环境,可启动、停止、删除,每个容器相互隔离。
仓库(Registry):存储和分发镜像的服务,例如 Docker Hub、国内镜像仓库。
Docker Compose:用于定义和运行多容器应用的工具,通过 yaml 文件配置所有服务,一键启动 / 停止。
4.3 镜像管理高频命令
1 | # 1. 搜索镜像(也可直接在Docker Hub网页搜索) |
4.4 容器管理高频命令
核心运行命令详解
1 | # 基础格式:docker run [选项] 镜像名 [命令] |
常用参数说明:
-d:后台守护进程运行容器--name 容器名:给容器自定义名称,便于管理-p 主机端口:容器端口:端口映射,将主机端口绑定到容器端口,外部可通过主机端口访问容器服务-v 主机路径:容器路径:数据卷挂载,实现数据持久化(容器删除数据不丢失)-it:交互式运行,进入容器终端,通常搭配/bin/bash使用--rm:容器退出后自动删除,常用于临时测试
高频容器操作命令
1 | # 1. 查看运行中的容器 |
仓库管理操作(Registry)
1 | # 登录镜像仓库(如 Docker Hub、阿里云 ACR) |
数据卷(Volume)
1 | # 创建数据卷 |
网络(Network)
1 | # 查看所有网络 |
4.5 数据持久化(核心必备)
容器删除后,容器内产生的数据会全部丢失,需通过数据卷挂载实现数据持久化,两种常用方式:
方式 1:命名卷挂载(推荐,Docker 统一管理)
1 | # 示例:运行mysql容器,将数据库数据持久化到命名卷mysql_data |
命名卷优势:无需关心主机路径,Docker 自动管理,支持跨容器共享数据,备份 / 迁移更便捷。
方式 2:绑定挂载(主机路径挂载,适合配置文件修改)
1 | # 示例:运行nginx容器,挂载主机配置文件和网页目录 |
绑定挂载优势:可直接在主机上修改文件,容器内实时生效,适合开发调试场景。
5. Docker 地址修改完整指南
Docker 的镜像拉取下载源地址(从哪里下载镜像)和本地镜像 / 容器 / 数据的存储路径(下载的文件存在本地哪里),都完全支持自定义修改。
5.1 修改镜像文件下载地址(镜像拉取源 / 加速源)
这个配置修改的是拉取 Docker 镜像时的上游仓库服务器地址,核心解决官方源国内访问慢、拉取超时 / 失败的问题,配置一次永久生效。
详细设置步骤
打开 Docker Desktop,点击右上角齿轮图标进入设置 (Settings);
左侧菜单选择Docker Engine,进入 Docker 守护进程配置页;
在右侧的 JSON 编辑框中,找到或新增
registry-mirrors字段,填入国内可用的镜像加速地址,完整配置示例如下(2026 年实测可用):1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.1ms.run",
"https://mirror.ccs.tencentyun.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.xuanyuan.me",
"https://docker.xiaogenban1993.com"
],
"dns": ["223.5.5.5", "8.8.8.8"]
}点击右下角Apply & Restart,等待 Docker 自动重启,配置即可生效;
验证配置是否生效:以管理员身份打开 PowerShell,执行以下命令,输出中包含你配置的镜像地址即为成功。
1
docker info | findstr "Registry Mirrors"
5.2 修改 Docker 本地默认存储路径
Docker 默认将镜像、容器、数据卷、日志等所有数据存放在系统 C 盘,长期使用会占用大量 C 盘空间,可通过以下方法迁移到其他磁盘,适配不同 Docker 运行后端。
核心说明
Windows 系统 Docker Desktop 主流使用WSL 2 后端(官方推荐,家庭 / 专业版通用),其数据默认存放在 WSL 的虚拟磁盘文件中,路径为:C:\\Users\\你的用户名\\AppData\\Local\\Docker\\wsl\\data\\ext4.vhdx
所有镜像、容器、卷数据都在这个虚拟磁盘里,迁移核心是对docker-desktop-data这个 WSL 发行版进行导出 + 重新导入到新盘符。
方案 1:WSL 2 后端 已安装环境迁移(推荐,保留所有数据)
前置准备
备份关键数据(避免迁移异常导致数据丢失):
1
2
3
4# 备份本地镜像到tar包(可选,重要镜像建议备份)
docker save -o D:\Docker_Backup\my-images.tar 镜像名1:标签 镜像名2:标签
# 查看所有WSL发行版,确认存在docker-desktop和docker-desktop-data
wsl -l -v完全关闭 Docker Desktop:右键任务栏托盘 Docker 图标,选择Quit Docker Desktop,等待图标完全消失,确保进程全部退出;
提前在目标磁盘创建文件夹,例如
D:\\Docker\\wsl\\data(用于存放新的虚拟磁盘)、D:\\Docker_Backup(用于存放临时备份包)。
完整迁移步骤
以管理员身份打开 PowerShell,依次执行以下命令:
关闭所有正在运行的 WSL 实例
1
wsl --shutdown
导出 docker-desktop-data 数据到备份 tar 包(保留所有镜像、容器、卷数据)
1
2# 路径替换为你创建的备份文件夹路径
wsl --export docker-desktop-data D:\Docker_Backup\docker-desktop-data.tar注销原 C 盘的 docker-desktop-data 发行版(释放 C 盘空间)
1
wsl --unregister docker-desktop-data
重新导入 docker-desktop-data 到新的磁盘路径
1
2# 第一个路径:新的存储目录,第二个路径:上一步导出的tar包路径
wsl --import docker-desktop-data D:\Docker\wsl\data D:\Docker_Backup\docker-desktop-data.tar --version 2导入完成后,重新启动 Docker Desktop,等待服务启动完成;
验证迁移是否成功:
执行
docker images,查看原有镜像是否正常显示;执行
docker run hello-world,测试容器运行正常;查看新路径
D:\\Docker\\wsl\\data下是否生成ext4.vhdx虚拟磁盘文件;
确认迁移完全成功后,可删除
D:\\Docker\_Backup\\docker-desktop-data.tar临时备份包,释放磁盘空间。
方案 2:WSL 2 后端 全新安装时直接指定存储路径
适合还未安装 Docker Desktop 的用户,一步到位指定存储路径,无需后续迁移:
提前完成 WSL 2 安装配置,在目标磁盘创建安装目录,例如
D:\\Program Files\\Docker、D:\\Program Files\\Docker\\data;从 Docker 官网下载最新安装包
Docker Desktop Installer.exe,放到指定目录;以管理员身份打开 PowerShell,导航到安装包所在目录,执行以下静默安装命令,直接指定程序安装路径和数据存储路径:
1
2
3
4# 替换为你的实际路径,双反斜杠转义
start /w "" "Docker Desktop Installer.exe" install -accept-license `
--installation-dir="D:\\Program Files\\Docker" `
--wsl-default-data-root="D:\\Program Files\\Docker\\data"等待安装完成,启动 Docker 后,数据会默认存放在你指定的路径,无需额外配置。
方案 3:Hyper-V 后端 图形化修改路径(Windows 专业 / 企业版)
如果你的 Docker 使用 Hyper-V 虚拟机后端,可直接通过图形界面修改:
打开 Docker Desktop,进入设置 (Settings);
左侧菜单选择Resources → Advanced;
找到Disk image location选项,点击Browse,选择目标磁盘的文件夹(例如
D:\\Docker\\Hyper-V);点击Apply & Restart,Docker 会自动将虚拟磁盘迁移到新路径,等待重启完成即可生效。
方案 4:Windows 容器模式 修改存储路径
如果你运行的是 Windows 原生容器,可通过修改 daemon 配置指定存储路径:
打开 Docker Desktop,右键托盘图标,选择Switch to Windows containers,切换到 Windows 容器模式;
进入设置 (Settings) → Docker Engine;
在 JSON 配置中添加
data-root字段,指定新的存储路径,示例如下:1
2
3
4{
"experimental": false,
"data-root": "D:\\Docker\\windows-containers"
}注意:路径必须用双反斜杠转义,且提前手动创建好目标文件夹;
点击Apply & Restart,重启 Docker 生效;
验证:执行
docker info | findstr 'Docker Root Dir',输出路径与你配置的一致即为成功。
6. 查看 Docker 运行后端类型
Windows 系统下 Docker Desktop 主要支持 WSL 2(官方推荐,性能最优)和 Hyper-V(仅 Windows 专业 / 企业版可选)两种后端,可通过以下 3 种方法快速确认当前使用的后端类型。
方法 1:通过 Docker Desktop 图形界面查看(最直观)
打开 Docker Desktop,点击右上角齿轮图标进入 设置 (Settings);
在左侧菜单选择 General(通用);
查看右侧面板中的 Use the WSL 2 based engine 选项:
✅ 若该选项已勾选,且下方显示
WSL 2 is enabled,则当前后端为 WSL 2;❌ 若该选项未勾选,则当前后端为 Hyper-V(仅 Windows 专业 / 企业版可见此状态)。
方法 2:通过docker info命令查看(最准确)
以管理员身份打开 PowerShell/CMD,执行以下命令:
1 | docker info |
在输出结果中查找以下关键信息:
WSL 2 后端:会在输出中看到
OSType: linux,且在Kernel Version或Operating System字段中包含WSL 2字样;Hyper-V 后端:会在输出中看到
OSType: linux,且在Operating System字段中包含Docker Desktop on Windows (Hyper-V)字样。
方法 3:通过 WSL 命令辅助验证(WSL 2 专属)
以管理员身份打开 PowerShell,执行以下命令:
1 | wsl -l -v |
若输出列表中包含
docker-desktop和docker-desktop-data两个 WSL 发行版,且VERSION列显示为2,则当前 Docker 后端为 WSL 2;若输出中无 Docker 相关的 WSL 发行版,或提示
未找到WSL发行版,则当前后端为 Hyper-V。
补充说明
Windows 家庭版:仅支持 WSL 2 后端,无法使用 Hyper-V,因此默认且只能是 WSL 2;
Windows 专业 / 企业版:可在 Docker Desktop 设置的
General中手动切换后端,切换后需重启 Docker 生效。
7. Docker Compose YAML 配置详解
Docker Compose 是用于定义和运行多容器应用的工具,通过 docker-compose.yml YAML 文件配置所有服务,一键启动 / 停止。
7.1 YAML 文件结构
一个标准的 docker-compose.yml 文件通常包含以下顶层配置:
1 | version: '3.8' # Compose 文件格式版本(推荐 3.8,兼容 Docker Engine 19.03+) |
7.2 Services 层核心配置项(最常用)
services 是 YAML 文件的核心,每个服务对应一个容器,下面是每个服务的高频配置项:
1. image:指定镜像(必选,二选一)
直接使用已有的镜像,无需构建。
1 | services: |
2. build:构建镜像(必选,二选一)
从 Dockerfile 构建自定义镜像,适合需要定制化的场景。
1 | services: |
3. ports:端口映射(高频)
将主机端口绑定到容器端口,外部可通过主机端口访问容器服务。
1 | services: |
4. volumes:数据卷挂载(核心,数据持久化)
将主机目录 / 命名卷挂载到容器,实现数据持久化(容器删除数据不丢失)。
1 | services: |
5. environment:环境变量(高频)
传递环境变量到容器,常用于配置数据库密码、服务端口等。
1 | services: |
6. depends\_on:服务依赖关系
定义服务启动顺序,确保依赖的服务先启动(但不等待依赖服务 “完全就绪”,仅保证启动顺序)。
1 | services: |
7. command:覆盖容器默认启动命令
替换镜像内置的启动命令,适合临时调整容器行为。
1 | services: |
8. restart:重启策略(生产环境必选)
定义容器退出后的重启行为,保证服务高可用。
1 | services: |
9. networks:自定义网络
将服务加入指定网络,实现服务间通信(同一网络内的服务可通过服务名互相访问)。
1 | services: |
10. container\_name:自定义容器名
给容器指定固定名称(默认会自动生成名称),便于管理。
1 | services: |
7.3 完整实战示例:LNMP 环境
下面是一个包含 Nginx、MySQL、PHP 的完整 docker-compose.yml 文件,整合了上述所有核心配置:
1 | services: |
7.4 配套 Docker Compose 常用命令
编写好 YAML 文件后,使用以下命令管理服务:
1 | # 1. 启动所有服务(后台运行) |
7.5 关键注意事项
缩进敏感:YAML 文件严格使用空格缩进(建议 2 个空格),禁止使用 Tab;
路径写法:Windows 系统下主机路径用正斜杠(如
D:/docker/data),或双反斜杠转义(D:\\docker\\data);服务名通信:同一网络内的服务可通过服务名互相访问(如 web 服务连接数据库时,主机名填
db即可);版本兼容:确保
version字段与你的 Docker Engine 版本兼容(推荐3.8,覆盖绝大多数场景)。
8. Docker 常见问题排查手册
【通用前置排查 4 步走】
无论遇到任何问题,先执行以下步骤,可解决 70% 的偶发异常:
权限与基础校验:以管理员身份运行 PowerShell / 终端 / Docker Desktop;任务管理器→性能→CPU,确认「虚拟化」为已启用,未开启则进入 BIOS 开启 Intel VT-x/AMD-V。
WSL 2 核心修复:
1
2
3
4
5
6# 更新WSL 2内核
wsl --update
# 设置WSL 2为默认版本
wsl --set-default-version 2
# 验证WSL状态,VERSION为2即为正常
wsl -l -vWindows 功能校验:打开「控制面板→程序→启用或关闭 Windows 功能」,确保勾选:
适用于 Linux 的 Windows 子系统
虚拟机平台
家庭版系统禁止勾选 Hyper-V(仅专业 / 企业版支持,勾选会直接导致启动失败)
基础重启修复:关闭 Docker Desktop→执行
wsl --shutdown→重启电脑→重新启动 Docker,解决异常退出导致的临时故障。
8.1 Docker Desktop 启动 / 安装失败(最高频)
问题 1:启动报错 WSL 2 installation is incomplete.
现象:打开 Docker 弹出该报错,引擎无法启动
核心根因:WSL 2 内核未安装 / 版本过低、WSL 分发损坏、未设置 WSL 2 为默认版本
解决方案:
管理员 PowerShell 执行
wsl --update升级内核,完成后重启电脑;执行
wsl --set-default-version 2设置 WSL 2 为默认版本;若仍报错,执行
wsl --install重新安装 WSL 2,重启后重试;终极修复(会清空原有镜像 / 容器,提前备份):
1
2
3wsl --shutdown
wsl --unregister docker-desktop
wsl --unregister docker-desktop-data重启 Docker Desktop,会自动重建 WSL 分发,恢复正常启动。
问题 2:启动报错 Hardware assisted virtualization must be enabled in the BIOS
现象:启动报错,提示虚拟化未开启
核心根因:BIOS 未开启 CPU 虚拟化、Windows 虚拟机平台功能未启用、第三方虚拟机软件冲突
解决方案:
任务管理器确认虚拟化状态,未开启则重启电脑进入 BIOS,开启
Intel Virtual Technology (VT-x)/AMD-V;确认已勾选「虚拟机平台」Windows 功能,重启电脑生效;
若同时安装 VMware/VirtualBox,需开启「Windows Hypervisor Platform」功能,避免虚拟化冲突;
企业设备确认组策略未禁用虚拟化功能。
问题 3:启动一直卡在Starting状态,长时间无响应
现象:托盘图标一直显示 Starting,超过 5 分钟未进入 Running 状态
核心根因:WSL 2 实例异常、配置文件损坏、默认端口被占用、安全软件拦截、旧版本残留
解决方案:
- 关闭 Docker,执行
wsl --shutdown,等待 10 秒后以管理员身份重新启动 Docker;