最常见原因是容器启动后立即退出,docker ps -a 会显示已退出容器,但若状态为 Created 则需手动 start;Exited(1) 表示命令失败,Exited(137) 多因内存超限被 OOM Killer 终止。

docker ps -a 为什么没显示刚创建的容器
最常见的情况是容器启动后立即退出,docker ps 默认只列运行中的容器,而 docker ps -a 才会包含已停止、已退出、已创建但未启动的状态。如果你执行了 docker run 命令却在列表里“找不到”,大概率不是丢了,而是它根本没活过几秒。
排查时先确认命令是否带了 -d(后台运行)参数;没加的话,容器会前台运行并阻塞终端——一旦你关掉终端或 Ctrl+C,容器就退出了,状态变成 Exited (0) 或带错误码的 Exited (137) 等。
- 运行
docker ps -a | head -20查看最近创建的容器,注意STATUS列 - 如果看到刚命名的容器状态是
Created,说明它还没启动:用docker start启动它 - 如果是
Exited (1),大概率是启动命令失败(比如 CMD 中的脚本不存在、权限不对、依赖缺失) - 如果是
Exited (137),通常是被 OOM Killer 杀掉——内存超限,检查docker run是否加了--memory限制,或宿主机资源是否吃紧
容器名被 Docker Desktop 自动重命名了
Docker Desktop 的图形界面有时会跳过你指定的 --name,悄悄给容器加上随机后缀,比如你输 my-app,实际创建的是 my-app-2 或 my-app-12345。这不是 bug,是它内部对命名冲突的默认处理逻辑——尤其当你删过同名容器但数据残留、或多个 Compose 项目共用名字时。
解决办法不是靠肉眼找,而是用过滤查:
- 按前缀查:
docker ps -a --filter "name=^my-app"(^表示开头匹配) - 按镜像查:
docker ps -a --filter "ancestor=nginx:alpine",比记名字更可靠 - 按标签查(如果你用了
--label):docker ps -a --filter "label=env=dev" - Docker Desktop GUI 左侧“Containers”页顶部的搜索框,支持模糊匹配,直接输部分名称通常就能捞出来
容器在 WSL2 发行版里,但 Docker Desktop 没同步到列表
这是 Windows 上 Docker Desktop 最隐蔽的“找不到”场景:容器其实在 docker-desktop-data 这个 WSL 发行版里正常运行着,但 Docker Desktop 客户端进程没能从该发行版中读取状态,导致 GUI 和 CLI 都显示为空。
典型诱因是 WSL2 子系统异常挂起或内核版本不兼容(比如你手动替换了 WSL 内核),或者 docker-desktop 发行版本身卡在 STOPPED 状态。
- 先运行
wsl -l -v,确认docker-desktop和docker-desktop-data状态都是Running - 如果不是,用
wsl --shutdown强制终止所有 WSL 实例,再重启 Docker Desktop - 如果仍是
Stopped,尝试wsl --unregister docker-desktop+wsl --unregister docker-desktop-data,然后重启 Docker Desktop 让它重建(注意:这会清空所有镜像和容器) - 别用
wsl -d docker-desktop直接进引擎容器调试——它不是普通 Linux 环境,强行操作可能让状态更混乱
Docker Desktop GUI 列表卡在 Loading 状态
界面左下角一直转圈、“Containers”页空白、点刷新没反应——这不是容器丢了,是 Docker Desktop 客户端跟后台服务断连了。常见于 Windows 更新后服务注册异常、杀毒软件拦截 named pipe 通信、或 com.docker.service 进程崩溃但没自动拉起。
- 打开 Windows 服务管理器(
services.msc),找到Docker Desktop Service,确认状态是“正在运行”,如果不是,右键启动 - 若启动失败,看它的“依赖服务”列表,重点检查
Windows Management Instrumentation和Windows Installer是否也运行正常 - 临时绕过 GUI:在 PowerShell 里执行
docker ps -a,如果命令能返回结果,说明引擎没问题,只是 UI 层故障 - 避免频繁点击 GUI 刷新按钮——它会不断重试连接,可能堆积未释放的 socket,加剧卡顿
Docker Desktop 的“找不到容器”问题,绝大多数时候不是数据丢失,而是状态不同步、命名遮蔽或 UI 通信中断。真正危险的信号只有一个:执行 docker ps -a 也完全无响应,且 docker info 报错“Cannot connect to the Docker daemon”。这时候才需要怀疑 WSL2 底层或服务进程是否崩了。











