在 WSL 中安装 Docker

为现代开发环境打造高效的容器化工作流

作为现代开发者的核心工具,Docker 与 WSL 的结合为 Windows 用户提供了接近原生 Linux 的开发体验。本文将详细介绍两种在 WSL 中安装 Docker 的方法,帮助你选择最适合自己需求的方案。

方法一:Docker Desktop + WSL 2 后端(推荐方案)

这是目前官方推荐且最高效的安装方式,充分利用了 WSL 2 的架构优势。

核心优势

  • 卓越性能:基于 WSL 2 的完整系统调用兼容性,文件 I/O 性能大幅提升
  • 无缝集成:单一 Docker 守护进程同时服务于 Windows 和 WSL 环境
  • 简化管理:通过 Docker Desktop 图形界面统一管理容器、镜像和设置
  • 跨环境支持:在 WSL 终端和 Windows PowerShell 中均可使用 Docker 命令

环境准备

确保系统满足以下要求:

  1. 操作系统:Windows 10 版本 2004(Build 19041)或更高版本,或 Windows 11
  2. 启用 WSL 2 功能:以管理员身份运行 PowerShell:
powershell 复制代码
# 一键安装(推荐,适用于最新版 Windows)
wsl --install

# 或手动启用必要功能
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

# 重启后设置 WSL 2 为默认版本
wsl --set-default-version 2

详细安装步骤

1. 下载 Docker Desktop

访问 https://www.docker.com/products/docker-desktop/ 下载 Windows 版安装程序。

2. 安装过程中的关键配置

运行安装程序时,务必勾选 "Use WSL 2 instead of Hyper-V" 选项,这是实现高效集成的核心设置。

3. 安装后配置
  • 安装完成后重启计算机
  • 首次启动 Docker Desktop 时,进入 Settings → General
  • 确认 "Use the WSL 2 based engine" 选项已启用
  • 在 Settings → Resources → WSL Integration 中,确保你的 WSL 发行版已开启集成
4. 验证安装

打开 WSL 发行版(如 Ubuntu),执行以下命令验证:

bash 复制代码
# 检查版本
docker --version
docker-compose --version

# 运行测试容器
docker run --rm hello-world

# 更全面的系统检查
docker info

故障排除

如果遇到 WSL 2 集成问题,可尝试以下命令:

powershell 复制代码
# 检查 WSL 状态
wsl --status

# 确保发行版使用 WSL 2
wsl --list --verbose

# 如果版本不对,进行转换
wsl --set-version Ubuntu 2

方法二:在 WSL 发行版内直接安装 Docker Engine

这种传统方法将 Docker 直接安装在 WSL 的 Linux 环境中,适合有特殊需求的用户。

适用场景

  • 需要在纯命令行环境下工作
  • 希望完全控制 Docker 守护进程
  • 环境限制无法安装 Docker Desktop
  • 学习 Linux 系统管理的练习环境

Ubuntu/Debian 发行版安装步骤

1. 更新系统并安装依赖
bash 复制代码
sudo apt update
sudo apt upgrade -y

# 安装必要工具
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release -y
2. 添加 Docker 官方仓库
bash 复制代码
# 创建密钥环目录
sudo install -m 0755 -d /etc/apt/keyrings

# 下载并安装 Docker 的 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# 添加稳定版仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
3. 安装 Docker Engine
bash 复制代码
# 更新仓库信息
sudo apt update

# 安装 Docker
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
4. 配置用户权限和服务
bash 复制代码
# 启动 Docker 服务
sudo systemctl start docker
sudo systemctl enable docker

# 将当前用户加入 docker 组
sudo usermod -aG docker $USER

# 重要:重新登录使组权限生效
newgrp docker

# 验证安装
docker run --rm hello-world

针对 WSL 的特殊优化

在 WSL 环境中直接运行 Docker 时,建议进行以下优化配置:

1. 配置 Docker 守护进程启动选项
bash 复制代码
# 编辑 Docker 配置文件
sudo nano /etc/docker/daemon.json

添加以下内容以优化 WSL 环境下的性能:

json 复制代码
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "data-root": "/home/docker-data"
}
2. 设置 Docker 服务自动启动

由于 WSL 的特殊性,需要确保 Docker 服务正确启动:

bash 复制代码
# 创建启动脚本
sudo nano /etc/wsl.conf

添加以下内容:

ini 复制代码
[boot]
command = "service docker start"

方案对比与选择建议

特性 Docker Desktop + WSL 2 WSL 内直接安装
安装难度 ⭐⭐⭐⭐⭐ (非常简单) ⭐⭐⭐ (需要命令行经验)
性能表现 ⭐⭐⭐⭐⭐ (最优) ⭐⭐⭐⭐ (良好)
资源占用 ⭐⭐⭐⭐ (共享守护进程) ⭐⭐⭐ (独立守护进程)
维护成本 ⭐⭐⭐⭐⭐ (自动更新) ⭐⭐⭐ (手动维护)
功能完整性 ⭐⭐⭐⭐⭐ (全功能支持) ⭐⭐⭐⭐ (核心功能)
学习价值 ⭐⭐⭐ (抽象程度高) ⭐⭐⭐⭐⭐ (深入理解)

选择建议

选择 Docker Desktop + WSL 2 如果:

  • 你是 Docker 初学者或追求开发效率
  • 希望获得开箱即用的完整体验
  • 需要在 Windows 和 WSL 环境间无缝切换
  • 看重图形化界面和便捷的更新机制

选择 WSL 内直接安装如果:

  • 你是 Linux 系统管理员或 DevOps 工程师
  • 需要完全控制 Docker 守护进程的配置
  • 环境限制无法安装 Docker Desktop
  • 希望通过实践深入学习 Docker 和 Linux 系统管理

最佳实践与优化技巧

1. 磁盘空间管理

Docker 镜像和容器可能占用大量磁盘空间,定期清理:

bash 复制代码
# 清理无用资源
docker system prune -a --volumes

# 查看磁盘使用情况
docker system df

2. 项目文件存储位置

将项目文件存储在 WSL 文件系统内(如 /home/username/projects)而非 Windows 文件系统(如 /mnt/c/),以获得更好的性能。

3. 开发环境配置

使用 Docker Compose 管理多容器应用,创建 docker-compose.yml 文件:

yaml 复制代码
version: '3.8'
services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
  db:
    image: postgres:13
    environment:
      POSTGRES_DB: myapp
      POSTGRES_USER: developer
      POSTGRES_PASSWORD: password

结语

无论选择哪种安装方式,WSL 与 Docker 的组合都为 Windows 开发者提供了强大的开发环境。对于大多数用户,我们强烈推荐方法一(Docker Desktop + WSL 2),它代表了容器化开发在 Windows 平台上的最佳实践。

选择适合自己工作流程的方案,开始享受高效、一致的容器化开发体验吧!

相关推荐
你好,帅哥13 分钟前
openssl ,msys2 ,交叉编译
linux·运维·服务器
计算机安禾23 分钟前
【Linux从入门到精通】第36篇:DNS服务探秘——自己搭建一个内网DNS
linux·运维·servlet
Web极客码1 小时前
2026年Linux VPS安全加固清单:SSH、防火墙与审计就绪配置
运维·服务器·数据库
星恒讯工业路由器2 小时前
配网自动化多网融合应用解决方案
运维·自动化
智慧物业老杨2 小时前
智慧物业收费系统的数智化落地实践:从人工硬扛到自动化闭环
运维·自动化
techdashen2 小时前
Cloudflare 为何抛弃 NGINX,用 Rust 自研了一个代理
运维·nginx·rust
南城猿2 小时前
保姆级 Ubuntu 部署 禅道
linux·运维·ubuntu
珠海西格电力3 小时前
零碳园区产业园管理系统的全场景源网荷储氢协同调度功能是如何实现的
大数据·运维·人工智能·物联网·能源
木雷坞3 小时前
K8s GPU 推理服务 ImagePullBackOff 排查与预热
云原生·容器·kubernetes·gpu算力
wj3055853783 小时前
CC-Switch 在 WSL Ubuntu 中安装记录
linux·运维·ubuntu