Docker ps 是用于查看Docker服务器中容器状态(运行/暂停/停止),及批量获取容器基本信息最常用的指令。ps命令具有很多可用的参数,下面将对其参数含义和用法做具体的说明&总结
docker ps :会列出出正在运行的容器信息。

CONTAINER ID:每个容器的唯一标识符号,自动生成。类似于数据库中的主键。
IMAGE :创建容器使用的镜像名称。
COMMAND:运行容器时的命令。
CREATED:容器创建的时间。
STATUS:容器的运行状态,Up 17 hours 指容器已运行17小时。
-created(已创建)
-restarting(重启中)
-running(运行中)
-removing(迁移中)
-paused(暂停)
-exited(停止)
-dead(死亡)
PORTS:容器开放的端口信息。
NAME:容器的别名,在运行容器执行docker run 时可使用 --name进行指定。
docker ps -a :会列出当前服务器中所有的容器,无论是否在运行。

此时可以看到,列表STATUS中多了其他状态
Exited(0) 6 months ago 代表:容器已退出(停止运行)退出时状态为 0 退出时间 6月前
同时我们看到PORTS中
0.0.0.0:32768->80/tcp 这代表两层含义 1:容器中开放了80端口,使用TCP协议,对应宿主机使用32768端口进行映射。此时可以使用"宿主机IP:32768" 对容器80端口提供的服务进行访问
docker ps -s:会列出容器的文件大小(容器增加的大小/容器的虚拟大小)

SIZE:35.2MB(virtual 108MB)容器在镜像ubuntu的大小的基础上增加了35.2MB,例如在容器中运行apt-get update 指令,会在写入层新增文件。
容器的虚拟大小=容器镜像的大小+容器增加大小
docker ps -q:仅列出CONTAINER ID 字段

此命令常用于批量操作的参数
如批量停止所有容器 docker stop `docker ps -a -q`
docker ps -l: 显示最后一个运行的容器(无论该容器目前处于什么状态)
docker ps -n 数量x:显示最后 x 个运行容器,当x为1时和 -l 含义相同。(无论该容器目前处于什么状态)

常用于快速查找最近运行的容器
docker ps --no-trunc:不对输出进行截断操作,此时可以看到完整的COMMAND,CONTAINER ID

高级指令
docker -f :使用过滤器来过滤输出
目前支持过滤器:
id (容器的id)
label
name(容器名称)
exited (整数-容器退出状态码,只有在使用-all才有用)
status 容器状态(created,restarting,running,paused,exited,dead)
ancestor 过滤从指定镜像创建的容器
before (容器的名称或id),过滤在给定id或名称之后创建的容器
isolation (default process hyperv) (windows daemon only)
volume (数据卷名称或挂载点),--过滤挂载有指定数据卷的容器
network(网络id或名称),过滤连接到指定网络的容器
docker ps -f status=exited

docker ps -f ancestor=597ce1600cf4 -f status=exited -a

注意:ancestor过滤镜像,如果制定的是某个父镜像,则过滤出的结果包含以此镜像构建的子镜像创建的容器,不仅仅是以该镜像直接创建的容器
docker ps --formart {{.Names}}:以go的形式格式化输出列表
go模板
.ID 容器的ID
.Image 镜像的ID
.Command 容器启动的命令
.CreatedAt 创建容器的时间点
.RunngingFor 从容器创建到现在过去的时间
.Ports 暴露的端口
.Status 容器的状态
.Size 容器硬盘的大小
.Names 容器的名称
.Label 指定label的值
.Mounts 挂载到这个容器的数据卷名称
image.png

综合使用实例

删除所有状态为exited的容器