如果你在 Windows 上做开发,Docker Desktop 很方便,但也可能遇到资源占用、启动慢、版本策略或公司合规限制等问题。一个常见替代方案是:直接在 WSL2 的 Linux 发行版里安装 Docker Engine,让容器跑在 Linux 环境中,再通过命令行/VS Code/IDE 来管理。
本文以“从零配置 + 可长期使用”为目标,尽量把关键点一次讲清:安装、权限、网络优化思路、与 VS Code 配合、以及常见坑的排查方向。
建议在开始前确认三件事:1)Windows 已开启 WSL 与虚拟机相关组件;2)WSL 默认版本为 2;3)已安装一个 Linux 发行版(例如 Ubuntu)。
优先使用官方渠道安装 WSL 与发行版。安装好 Ubuntu 后,首次启动会让你创建 Linux 用户名与密码。
进入 Ubuntu 后,先把基础依赖更新到位:
sudo apt update sudo apt -y upgrade sudo apt -y install ca-certificates curl gnupg lsb-release下面以 Docker 官方仓库为例(更容易获得稳定更新):
# 添加 Docker 官方 GPG key sudo install -m 0755 -d /etc/apt/keyrings 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 sudo apt update sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin安装完成后,启动并验证:
sudo service docker start sudo docker version sudo docker run --rm hello-world为了避免每次都输入 sudo,可以把当前用户加入 docker 组:
sudo usermod -aG docker $USER # 重新登录 WSL 终端后生效重新打开 Ubuntu 终端后,验证:
docker ps在部分网络环境下,拉取镜像可能会很慢。常见优化方向:配置镜像加速、检查 DNS、按单位合规要求配置代理、尽量使用体积更小的基础镜像(如 alpine/slim)。
推荐安装 VS Code 的 Remote - WSL 扩展,用 VS Code 直接打开 WSL 内的工程目录。这样代码与依赖在 Linux 文件系统中,终端与 Docker 命令也在同一环境,整体更稳定。
1)docker: permission denied:通常是没加入 docker 组或没重新登录 WSL。
2)Cannot connect to the Docker daemon:检查 docker 服务是否启动(service docker status/start)。
3)拉镜像慢:优先确认网络与 DNS,再考虑镜像加速或代理。
4)磁盘占用增长快:定期清理无用镜像/容器/缓存(谨慎执行,避免误删正在用的资源)。
- 用 docker compose 管理多服务:一条命令起停整套环境;
- 固定工作目录在 WSL 的 Linux 文件系统(如 /home/xxx/project);
- 给常用命令做 alias(compose up/down、日志查看等);
- 临时容器加 --rm,减少环境残留;
- 定期检查镜像与容器数量,避免环境越用越臃肿。
用 WSL2 运行 Docker 的最大价值是:把容器运行环境放回 Linux,兼顾 Windows 的编辑体验与开发效率。你可以先按本文完成最小可用配置,再根据项目逐步完善镜像加速、compose 模板与开发容器工作流。