如何查看 Docker 容器列表?
docker ps 看运行中的容器,docker ps -a 看全部(含已停止),-q 只出 ID,--filter 按条件过滤,--format 自定义输出。本文汇总常用组合与脚本用法。
基本命令:docker ps 列出运行中的容器;docker ps -a 列出全部**(含已停止);等价的新写法是 docker container ls / docker container ls -a。脚本里常用 docker ps -q(只输出 ID)做批量操作。**
常用变体
docker ps # 运行中
docker ps -a # 全部(含停止的)
docker ps -q # 只显示容器 ID(脚本用)
docker ps -s # 加显示磁盘占用
docker ps -n 5 # 最近创建的 5 个(含停止)
docker ps -l # 最新创建的一个
-s 的 size 主要是可写层大小,virtual size 含共享镜像内容,不等于卷、日志和全部实际磁盘占用;-n/-l 按创建时间,不是最近启动时间。
输出列含义:CONTAINER ID / IMAGE / COMMAND / CREATED / STATUS / PORTS / NAMES。
过滤(--filter)
docker ps -a --filter "status=exited" # 只看已退出的
docker ps --filter "name=web" # 名字含 web
docker ps --filter "ancestor=nginx:1.25" # 包括指定镜像及其派生镜像的容器
docker ps --filter "label=env=prod" # 按标签
docker ps --filter "health=unhealthy" # 健康检查失败的
自定义输出格式(--format)
docker ps --format "{{.Names}}\t{{.Status}}\t{{.Ports}}"
docker ps --format "table {{.ID}}\t{{.Image}}\t{{.RunningFor}}"
配合 watch 做简易监控台:
watch -n2 'docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"'
批量操作套路
# 先查看并确认目标,不要无差别停止所有工作负载
docker ps -a --filter status=exited
# 把审核后的容器 ID 每行一个写入 approved-ids.txt
if [ -s approved-ids.txt ]; then
xargs docker rm < approved-ids.txt # 不加 -f,不强删运行中的容器
fi
常见问题(FAQ)
Q:docker ps 和 docker container ls 有区别吗?
A:没有,后者是 1.13 后的新分组写法,ps 是兼容别名。
Q:为什么刚启动的容器 ps 里看不到?
A:多半启动即退出了——docker ps -a 找它,看 STATUS 的退出码,docker logs 容器名 查原因。
Q:能远程看另一台机器的容器吗?
A:docker -H tcp://host:2376 ps(需 TLS 配置)或 ssh 过去执行。