Skip to content

Windows 安装 Docker

Windows 上运行 Docker 有两种方式:

  1. Docker Desktop(推荐):图形化界面,集成所有工具,适合开发者
  2. WSL 2 + Docker Engine:在 WSL 2 的 Linux 环境中直接安装,更轻量

方式一:Docker Desktop(推荐)

详细安装步骤请参考 Docker Desktop 章节。

方式二:WSL 2 + Docker Engine

如果不想安装 Docker Desktop(例如因为许可证问题),可以在 WSL 2 中直接安装 Docker Engine。

第一步:安装 WSL 2

以管理员身份打开 PowerShell,执行:

powershell
# 安装 WSL 并默认安装 Ubuntu
wsl --install

# 查看可用的 Linux 发行版
wsl --list --online

# 安装指定发行版
wsl --install -d Ubuntu-22.04

# 确认 WSL 版本为 2
wsl --set-default-version 2

重启计算机后,首次打开 Ubuntu 需要设置用户名和密码。

第二步:在 WSL 2 中安装 Docker Engine

打开 WSL 2 的 Ubuntu 终端,按照 Ubuntu 安装文档 安装 Docker Engine:

bash
# 更新包索引
sudo apt-get update
sudo apt-get install -y ca-certificates curl

# 添加 Docker 仓库
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
  -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
  https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update

# 安装 Docker
sudo apt-get install -y \
  docker-ce docker-ce-cli containerd.io \
  docker-buildx-plugin docker-compose-plugin

第三步:配置 WSL 2 自动启动 Docker

WSL 2 没有 systemd(部分版本有),需要手动配置:

bash
# 方法一:使用 service 命令(适用于大多数 WSL 2)
sudo service docker start

# 方法二:如果支持 systemd,使用 systemctl
sudo systemctl enable docker
sudo systemctl start docker

~/.bashrc~/.zshrc 中添加自动启动:

bash
# 启动 Docker(如果没有运行)
if ! service docker status > /dev/null 2>&1; then
  sudo service docker start
fi

第四步:免 sudo 使用 Docker

bash
sudo usermod -aG docker $USER
newgrp docker

在 PowerShell / CMD 中使用 Docker

安装 Docker Desktop 后,可以直接在 Windows 的 PowerShell 或 CMD 中使用 docker 命令:

powershell
# 在 PowerShell 中验证
docker version
docker run hello-world

# 运行容器并映射端口
docker run -d -p 80:80 nginx

# 查看运行中的容器
docker ps

文件路径注意事项

在 Windows 上使用 Docker 挂载文件时,路径写法有所不同:

bash
# WSL 2 中(Linux 路径)
docker run -v /home/user/data:/data nginx

# PowerShell 中(Windows 路径)
docker run -v C:\Users\user\data:/data nginx

# 使用正斜杠(推荐)
docker run -v //c/Users/user/data:/data nginx

性能优化

WSL 2 内存限制

WSL 2 默认会使用大量内存,在 %UserProfile%\.wslconfig 中配置:

ini
[wsl2]
memory=4GB       # 最大内存
processors=4     # CPU 核心数
swap=2GB         # 交换空间

修改后重启 WSL 2:

powershell
wsl --shutdown

将项目文件放在 WSL 2 文件系统

将项目文件放在 WSL 2 的文件系统(/home/user/)而非 Windows 文件系统(/mnt/c/),IO 性能会大幅提升。

常见问题

错误:WSL 2 requires an update to its kernel component

下载并安装 WSL 2 内核更新包:https://aka.ms/wsl2kernel

错误:Docker Desktop requires Windows 10 version...

确认 Windows 版本满足要求,或者更新 Windows 到最新版本。

容器内无法访问网络

powershell
# 重置 WSL 2 网络
wsl --shutdown
# 重新打开 WSL 2

总结

Windows 上运行 Docker 推荐使用 Docker Desktop,配合 WSL 2 后端,既有图形界面又有接近原生的性能。如果对许可证有顾虑,可以选择在 WSL 2 中直接安装 Docker Engine。