关闭wsl integration不会删除容器,仅断开wsl终端调用docker cli的能力,所有容器、镜像、卷仍由docker desktop后台保留并正常运行。

关闭 Docker Desktop 的 WSL Integration 不会删除容器
只要没手动执行 docker rm 或 docker system prune,关掉 WSL Integration 本身不会删任何容器、镜像或卷。这个开关只控制「Docker Desktop 是否把当前 WSL 发行版(比如 Ubuntu-22.04)注册为可调用 docker CLI 的客户端」,本质是修改 /etc/wsl.conf 和 Windows 端的 socket 映射关系,不碰运行时数据。
常见误解来源:有人关掉集成后,在 WSL 里运行 docker ps 报错 Cannot connect to the Docker daemon,就以为“容器没了”。其实只是命令连不到 daemon——Docker Desktop 仍在后台运行,所有容器照常工作,docker ps 在 PowerShell 或 CMD 里照样能查到。
停用 WSL Integration 后哪些功能会失效
停用后,以下依赖 WSL ↔ Docker Desktop 通信链路的功能将不可用:
-
docker命令在 WSL 终端中直接调用失败(需改用 Windows 命令行或启用 TCP socket) - VSCode 的 Remote-Containers 扩展无法自动发现本地 Docker 引擎(会 fallback 到 SSH 或报 connection refused)
- WSL 内部构建镜像时无法访问 Windows 文件系统挂载点(如
-v /mnt/c/Users:/host可能权限异常或路径解析失败) - Docker Desktop GUI 的 “WSL Integration” 标签页中不再显示该发行版状态
真正会删容器的操作有哪些
容易混淆但实际危险的动作包括:
- 在 Docker Desktop 设置里点击
Reset to factory defaults→ 这会清空docker-desktop-dataWSL 实例,所有镜像/容器/卷永久丢失 - 执行
wsl --unregister docker-desktop-data→ 直接删除整个 WSL 分发,不可逆 - 误把
docker system prune -a --volumes当成“清理缓存”运行 → 删除所有停止容器 + 孤立卷 + 未使用镜像 - 在 Docker Desktop GUI 的 Containers 页面点 “Remove all” → 界面无二次确认,一键清空所有已停止容器
想安全隔离 WSL 和 Docker Desktop 怎么做
如果目标是让 WSL 自己跑一套独立 Docker(比如用 dockerd 直接在 Ubuntu 里启动),而不是依赖 Desktop,那就不是“关集成”,而是彻底解耦:
- 先停用 Docker Desktop 的 WSL Integration 开关(设置 → Resources → WSL Integration)
- 在 WSL 中安装原生
docker-ce包(不要用apt install docker.io,版本太旧) - 启动
dockerd并配置hosts = ["unix:///var/run/docker.sock"],避免端口冲突 - 确保
export DOCKER_HOST=unix:///var/run/docker.sock加入~/.bashrc - 此时 WSL 内的
docker命令走的是本地 daemon,和 Docker Desktop 完全无关
这种模式下,两个环境的数据完全隔离,删错一个也不会波及另一个——但要小心端口、存储驱动(overlay2 vs vfs)、镜像缓存重复占用等隐性开销。











