电脑港
白蓝主题五 · 清爽阅读
首页  > 软件应用

Docker ps命令看不到容器?别急,先查这5个地方

刚在终端敲完 ref="/tag/2019/" style="color:#8B0506;font-weight:bold;">docker ps,回车一按,结果空空如也——连自己明明启动过的 nginx 容器都不见了。这时候不是 Docker 坏了,大概率是你没看对地方。

1. 默认只显示运行中的容器

docker ps 默认只列出当前正在运行的容器。如果你用 docker run -d 启动后又手动停了,或者容器启动就崩了(比如配置写错、端口被占),它就不会出现在默认列表里。

试试这个命令,把所有容器(包括已停止的)都拉出来:

docker ps -a

2. 容器可能秒退了

比如你执行:

docker run ubuntu echo 'hello'

这条命令会启动一个 Ubuntu 容器,打印 hello,然后立刻退出。它确实存在过,但 docker ps 看不到,docker ps -a 才能看到,状态是 Exited (0) 2 minutes ago

3. 检查是不是用了不同用户或 Docker 上下文

如果你用的是 macOS 或 Windows 的 Docker Desktop,默认走的是 desktop-linux 上下文;而某些 Linux 服务器上,如果用 sudo docker ps 和普通用户执行结果不一致,可能是权限或上下文没对齐。

查当前上下文:

docker context show

切回默认上下文(如有需要):
docker context use default

4. 容器启动时加了 --rm 参数

如果启动时用了 --rm(比如 docker run --rm -p 8080:80 nginx),那容器一旦停止,就会自动删除。它不会留在 docker ps -a 里,自然更不会出现在 docker ps 中。

5. Docker 服务根本没起来

尤其在 WSL2 或某些 Linux 发行版上,Docker daemon 可能没自启。运行下面命令确认服务状态:

systemctl is-active docker

如果是 inactive,就启动它:
sudo systemctl start docker

小技巧:快速定位你的容器

不确定容器名?试试按镜像名过滤:

docker ps -a | grep nginx

或者用完整匹配:
docker ps -a --filter "ancestor=redis"