docker ps是我们操作容器次数最多的命令之一,但我们往往使用docker ps或是docker ps -a,对于该命令的其它选项,我们关注比较少。那么这一讲,我给大家详细讲讲该命令的全部方法。
命令:
docker container ls
描述:
列出容器。
用法:
docker container ls [OPTIONS]别名:
docker ps、docker container ps、docker container list(docker的一些命令具有别名,这四种别名是等价的,都可以使用,建议使用最简短的docker ps)
选项:
| 选项 | 描述 | 
|---|---|
| -a, –all | 显示所有容器(默认只显示正在运行的容器) | 
| -f, –filter | 根据提供的条件过滤输出 | 
| –format | 使用自定义模板格式化输出: ‘table’:以表格格式打印输出,包含列标题(默认) ‘table TEMPLATE’:使用给定的 Go 模板以表格格式打印输出 ‘json’:以 JSON 格式打印 ‘TEMPLATE’:使用给定的 Go 模板打印输出。 | 
| -n, –last | 显示最后创建的 n 个容器(包括所有状态),默认值-1 | 
| -l, –latest | 显示最新创建的容器(包括所有状态) | 
| –no-trunc | 不要截断输出 | 
| -q, –quiet | 只显示容器ID | 
| -s, –size | 显示总文件大小 | 
示例1:默认命令docker ps
docker ps输入命令之后,结果如下图所示:

可以看出,所有状态(STATUS)为Up的容器信息全部显示出来。Up状态代表运行中。
示例2:-a、–all选项
docker ps --all命令加上–all选项,显示所有容器,包含所有状态的容器。

上图的结果显示,Exited状态的容器hardcore_benz也显示出来了。
示例3:-f, –filter选项
–filter(或 -f)标志的格式是键=值对。如果有多个过滤器,则传递多个标志(例如 –filter “foo=bar” –filter “bif=baz”)。
 当前支持的过滤器有:
| 过滤器 | 描述 | 
|---|---|
| id | 容器ID | 
| name | 容器名称 | 
| label | 一个任意字符串,代表一个键或者一个键值对。表示为<key> 或 <key>=<value>。 | 
| exited | 一个整数,代表容器的退出码。仅在与 –all 选项一起使用时才有意义。 | 
| status | 其中一个状态为 created(已创建)、restarting(正在重启)、running(正在运行)、removing(正在移除)、paused(已暂停)、exited(已退出)或 dead(已死亡)。 | 
| ancestor | 筛选出共享给定镜像作为祖先的容器。表示为<image-name>[:<tag>]、<image id>或<image@digest> | 
| before 或 since | 筛选在给定容器 ID 或名称之前或之后创建的容器 | 
| volume | 筛选挂载了给定卷或绑定挂载的正在运行的容器。 | 
| network | 筛选连接到给定网络的正在运行的容器。 | 
| publish 或 expose | 筛选发布或暴露给定端口的容器。表示为<port>[/<proto>]或<startport-endport>/[<proto>] | 
| health | 根据容器的健康检查状态筛选容器。可能的状态有 starting(启动中)、healthy(健康)、unhealthy(不健康)或 none(无)。 | 
| isolation | 仅适用于 Windows 守护进程。值为 default、process 或 hyperv 之一。 | 
| is-task | 筛选作为服务“任务”的容器。布尔选项(true 或 false)。 | 
这个选项因为需要很多附加条件,我只给出能直接看出效果的示例。
docker ps -f status=exited这个选项只过滤出状态为exited(退出)的容器。

示例4:–format选项
该选项以适合自己的格式输出,其中按照Go模板的方式会涉及到以下占位符:
| 占位符 | 描述 | 
|---|---|
| .ID | 容器ID | 
| .Image | 镜像ID | 
| .Command | 引用的命令 | 
| .CreatedAt | 容器创建的时间 | 
| .RunningFor | 自容器启动以来的经过时间。 | 
| .Ports | 暴露的端口。 | 
| .State | 容器状态(例如:”created”(已创建)、”running”(运行中)、”exited”(已退出))。 | 
| .Status | 容器状态,包括持续时间与健康状态的详细信息。 | 
| .Size | 容器磁盘大小 | 
| .Names | 容器名称 | 
| .Labels | 分配给容器的所有标签。 | 
| .Label | 此容器特定标签的值。例如 ‘{{.Label “com.docker.swarm.cpu”}}’ | 
| .Mounts | 在此容器中挂载的卷的名称。 | 
| .Networks | 连接到这个容器的网络的名称。 | 
这个选项可以随便组合占位符,我每种类型只列举一个,剩下的由大家自己去玩。
docker ps  --format "table {{.Names}}\t{{.Size}}\t{{.Status}}"这个以表格形式打印。

docker ps --format json这个是json格式,看起来非常乱。

docker ps --format "{{.ID}}: {{.Command}} {{.RunningFor}}"这是使用Go模板的方式打印。

示例5:-n, –last选项
docker ps -n 3该选项后面必须加一个数字,否则会报错。该选项显示-n后面数字个容器,无论容器处于什么状态。
以下是我的阿里云上最后创建的3个容器。其中mymongo是退出状态,其它两个是运行状态。

示例6:-l, –latest选项
docker ps -l该选项显示最新创建的容器,无论该容器处于什么状态。下面显示的是我刚刚停止的容器mymongo,使用-l选项,即便是Exited状态,也会显示。

示例7:–no-trunc选项
docker ps --no-trunc执行该命令后,CONTAINER ID一列符号变长了。

示例8:-q, –quiet选项
docker ps -q该选项只用来显示容器ID,想不到这个选项的实际作用,难道只是怕污了眼睛而过滤大量信息?

如图所示,只显示容器ID,并不能知道这一堆符号是什么容器。
该选项可以和–no-trunc连用,执行结果如下所示:

示例9:-s, –size选项
docker ps -s加入该选项后,容器列表的最右侧增加SIZE列,显示两种不同的磁盘容量大小。

其中,前面的数字表示用于每个容器的可写层的磁盘数据量。 后面括号中“virtual” 表示的是容器使用的只读镜像数据以及可写层所用的磁盘空间总量。多个容器可能会共享一些或全部的只读镜像数据。从同一镜像启动的两个容器共享 100% 的只读数据,而具有共同层的不同镜像的两个容器则共享这些共同层。因此,不能简单地将虚拟大小相加。这可能会大大高估总磁盘使用量。
所有正在运行的容器在磁盘上使用的总磁盘空间是每个容器的 size 和 virtual size 值的组合。如果多个容器从完全相同的镜像启动,这些容器的总磁盘大小将是容器的总和(size of containers)加上一个镜像大小(virtual size – size)。
以上显示的磁盘空间占用情况,不包括以下五种方式:
- 日志驱动程序存储的日志文件所占用的磁盘空间。如果容器生成大量日志数据并且没有配置日志轮换,这可能会相当可观。
- 容器使用的卷和绑定挂载。
- 用于容器的配置文件的磁盘空间,这些文件通常很小。
- 写入磁盘的内存(如果启用了交换)。
- 检查点,如果你使用实验性的检查点/恢复功能。


![[转载]同一台电脑同时使用GitHub和GitLab](https://img-blog.csdnimg.cn/direct/0f11f1c28f3e41f3865e0160d3704180.png)
















