You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSL启用/禁用Docker Desktop时出现重复容器问题求助

解决方案

一、先定位并临时释放占用端口的进程

先确认目标端口(比如PostgreSQL的5432、NATS的4222)被哪个进程占用,在WSL终端执行:

ss -tulpn | grep <你的端口号>

输出中pid=<进程ID>字段对应占用端口的进程,临时终止它:

sudo kill -9 <进程ID>

二、排查并清理WSL本地Docker残留

Docker Desktop启动后,WSL的Docker上下文会自动切换到desktop-linux,导致常规docker ps无法看到WSL本地Docker daemon管理的容器。

  1. 切换到WSL本地Docker上下文:
docker context use default
  1. 查看本地所有容器:
docker ps -a
  1. 停止并删除所有残留容器:
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)
  1. 清理无用的镜像、卷、网络等资源:
docker system prune -af
  1. 禁用WSL本地Docker服务自动启动:
sudo systemctl disable docker.service docker.socket

三、排查并清理k3s残留

k3s使用containerd作为容器运行时,不会被常规Docker命令检测到,需要用containerd工具操作:

  1. 检查k3s服务状态:
sudo systemctl status k3s
  1. 停止并禁用k3s服务:
sudo systemctl stop k3s
sudo systemctl disable k3s
  1. 查看k3s管理的容器(k8s.io命名空间下):
sudo ctr -n k8s.io containers list
  1. 停止并删除这些容器:
sudo ctr -n k8s.io containers stop $(sudo ctr -n k8s.io containers list -q)
sudo ctr -n k8s.io containers rm $(sudo ctr -n k8s.io containers list -q)
  1. 清理k3s核心数据目录:
sudo rm -rf /var/lib/rancher/k3s
  1. 可选:清理k3s相关镜像:
sudo ctr -n k8s.io images rm $(sudo ctr -n k8s.io images list -q)

四、验证效果

执行wsl --shutdown重启WSL,再打开终端验证:

  • 执行ss -tulpn | grep <端口号>,确认端口不再被占用
  • 若清理Docker残留,可切换回Docker Desktop上下文docker context use desktop-linux,确保原有容器正常运行不受影响

内容的提问来源于stack exchange,提问作者Rohan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 11:22:40