Windows 上安装 Docker

1 阅读3分钟

在 Windows 上使用 Docker,目前最推荐、官方最认可、性能也最好的方式是:Docker Desktop + WSL 2 模式

这种方式利用了 Windows 内置的 Linux 子系统(WSL 2)提供原生 Linux 内核支持,性能接近原生 Linux,且省去了以往 Hyper-V 虚拟机的巨大开销。

以下是详细的安装及配置步骤:

第一步:开启硬件虚拟化(前提条件)

在安装任何软件前,确保你的电脑 BIOS/UEFI 中已经开启了“虚拟化技术”。

  1. 右键点击任务栏 -> 任务管理器
  2. 切换到 性能 选项卡。
  3. 查看右下角的 虚拟化:如果是“已启用”,则可以继续;如果是“已禁用”,需重启电脑进入 BIOS 开启(通常叫 Intel VT-x 或 AMD-V)。

第二步:安装并升级 WSL 2

这是 Docker 在 Windows 上运行的基础环境。

  1. 以管理员身份运行 PowerShell
  2. 输入以下命令安装 WSL(这会自动开启所需功能并下载 Linux 内核):
    wsl --install
    
    注:如果已经安装过,建议运行 wsl --update 确保是最新版本。
  3. 重启电脑(非常重要,这是激活底层功能所必需的)。

第三步:下载并安装 Docker Desktop

  1. 访问 Docker 官网下载页面,点击 Download for Windows
  2. 运行安装包,在安装过程中,务必勾选
    • Use WSL 2 instead of Hyper-V (recommended) —— 这是核心选项。
    • Add shortcut to desktop —— 方便启动。
  3. 等待安装完成,点击 Close and restart(或 Log out)。

第四步:Docker 初始化配置

  1. 启动 Docker Desktop:第一次启动可能需要接受许可协议。
  2. 检查后端设置
    • 点击右上角的 设置齿轮 (Settings)
    • 选择 General,确保勾选了 Use the WSL 2 based engine
    • 选择 Resources -> WSL Integration,勾选 Enable integration with my default WSL distro(如果你安装了 Ubuntu 等子系统,也建议把它们对应的开关打开)。
  3. 点击 Apply & Restart

第五步:验证安装是否成功

打开 PowerShell 或 CMD,输入:

docker --version
docker run hello-world

如果看到 "Hello from Docker!" 的字样,说明 Docker 已经完美运行。


💡 进阶优化建议(必看)

1. 解决内存占用过高问题

WSL 2 默认会根据需求动态占用内存,有时会吃掉很多系统资源。你可以通过限制它的上限来解决:

  • 按下 Win + R,输入 %UserProfile%
  • 在该目录下创建一个名为 .wslconfig 的文件(注意前面有个点)。
  • 记事本打开,写入以下内容:
    [wsl2]
    memory=4GB  # 限制最大占用 4GB 内存,根据你电脑总量调整
    processors=2 # 限制最多使用 2 个核心
    
  • 保存后,在 PowerShell 运行 wsl --shutdown 重启生效。

2. 配置镜像加速器(中国大陆用户推荐)

由于网络原因,直接拉取镜像可能较慢:

  • 在 Docker Desktop 设置中选择 Docker Engine
  • 在 JSON 配置中添加 registry-mirrors 字段:
    {
      "registry-mirrors": [
        "https://docker.m.daocloud.io",
        "https://mirror.baidubce.com"
      ]
    }
    
  • 点击 Apply & Restart

为什么不推荐其他方式?

  • Docker Desktop + Hyper-V 模式:较老的方式,性能稍差,且占用资源更死板,且 Windows 家庭版不支持。
  • 直接在 WSL 2 里安装 Docker Engine:这是一种手动挡模式(不装 Docker Desktop 软件本体)。虽然更轻量,但失去了图形化管理界面,且在文件系统挂载、网络转发上需要非常复杂的专业配置,不适合大多数开发者。