Usage: docker ps [OPTIONS] List containers Options: -a, --all Show all containers (default shows just running) -f, --filter value Filter output based on conditions provided (default []) - exited=<int> an exit code of <int> - label=<key> or label=<key>=<value> - status=(created|restarting|running|paused|exited) - name=<string> a container's name - id=<ID> a container's ID - before=(<container-name>|<container-id>) - since=(<container-name>|<container-id>) - ancestor=(<image-name>[:tag]|<image-id>|<image@digest>) containers created from an image or a descendant. --format string Pretty-print containers using a Go template --help Print usage -n, --last int Show n last created containers (includes all states) (default -1) -l, --latest Show the latest created container (includes all states) --no-trunc Don't truncate output -q, --quiet Only display numeric IDs -s, --size Display total file sizes
运行docker ps –no-trunc显示两2个链接容器。
$ docker ps --no-trunc CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4c01db0b339c ubuntu:12.04 bash 17 seconds ago Up 16 seconds 3300-3310/tcp webapp d7886598dbe2 crosbymichael/redis:latest /redis-server --dir 33 minutes ago Up 33 minutes 6379/tcp redis,webapp/db
docker ps命令默认只显示运行中的容器。要查看所有的容器,使用-a (或–all)标志:
$ docker ps -a
docker ps将暴露的端口组合到单个范围中(如果可能)。 例如,暴露TCP端口100,101,102的容器在PORTS列中显示100-102 / tcp。
过滤标志(-f或–filter)格式是key=value。如果超过一个过滤,就传递多个标志(如–filter “foo=bar” –filter “bif=baz”)
目前支持的过滤有:
label过滤器基于一个label的存在或label和值来匹配容器。
下面的过滤器指定label color不管它什么值来匹配容器。
$ docker ps --filter "label=color" CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 673394ef1d4c busybox "top" 47 seconds ago Up 45 seconds nostalgic_shockley d85756f57265 busybox "top" 52 seconds ago Up 51 seconds high_albattani
下面过滤器指定label color及值blue来匹配容器。
$ docker ps --filter "label=color=blue" CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d85756f57265 busybox "top" About a minute ago Up About a minute high_albattani
name过滤器全匹配或部分匹配容器名称。
下面的过滤器匹配容器名称包含nostalgic_stallman字符串的容器。
$ docker ps --filter "name=nostalgic_stallman" CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9b6247364a03 busybox "top" 2 minutes ago Up 2 minutes nostalgic_stallman
也可以匹配名称中的部分字符:
$ docker ps --filter "name=nostalgic" CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 715ebfcee040 busybox "top" 3 seconds ago Up 1 seconds i_am_nostalgic 9b6247364a03 busybox "top" 7 minutes ago Up 7 minutes nostalgic_stallman 673394ef1d4c busybox "top" 38 minutes ago Up 38 minutes nostalgic_shockley
exited过滤器基于容器退出码匹配。例如,过滤那么成功退出的容器。
$ docker ps -a --filter 'exited=0' CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ea09c3c82f6e registry:latest /srv/run.sh 2 weeks ago Exited (0) 2 weeks ago 127.0.0.1:5000->5000/tcp desperate_leakey 106ea823fe4e fedora:latest /bin/sh -c 'bash -l' 2 weeks ago Exited (0) 2 weeks ago determined_albattani 48ee228c9464 fedora:20 bash 2 weeks ago Exited (0) 2 weeks ago tender_torvalds
可以使用一个过滤器来过滤出那么以退出码137退出的容器,意味着此容器收到了SIGKILL(9)信号。
$ docker ps -a --filter 'exited=137' CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b3e1c0ed5bfe ubuntu:latest "sleep 1000" 12 seconds ago Exited (137) 5 seconds ago grave_kowalevski a2eb5558d669 redis:latest "/entrypoint.sh redi 2 hours ago Exited (137) 2 hours ago sharp_lalande
下面的任何一种情况都会导致以137代码退出:
手动终止容器的init进程 docker kill终止容器 docker daemon重启终止了所有运行中的容器status过滤器通过status来匹配容器。可以使用created, restarting, running, paused, exited 和 dead来过滤。例如,过滤状态码running的容器:
$ docker ps --filter status=running CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 715ebfcee040 busybox "top" 16 minutes ago Up 16 minutes i_am_nostalgic d5c976d3c462 busybox "top" 23 minutes ago Up 23 minutes top 9b6247364a03 busybox "top" 24 minutes ago Up 24 minutes nostalgic_stallman
过滤paused容器:
$ docker ps --filter status=paused CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 673394ef1d4c busybox "top" About an hour ago Up About an hour (Paused) nostalgic_shockley
ancestor过滤器基于容器的镜像来匹配容器。过滤器支持以下镜像表示方式:
image image:tag image:tag@digest short-id full-id如果不指定tag,就使用latest tag。例如,过滤那么使用latest ubuntu镜像的容器:
$ docker ps --filter ancestor=ubuntu CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 919e1179bdb8 ubuntu-c1 "top" About a minute ago Up About a minute admiring_lovelace 5d1e4a540723 ubuntu-c2 "top" About a minute ago Up About a minute admiring_sammet 82a598284012 ubuntu "top" 3 minutes ago Up 3 minutes sleepy_bose bab2a34ba363 ubuntu "top" 3 minutes ago Up 3 minutes focused_yonath
匹配基于ubuntu-c1镜像的容器,在这里ubuntu-c1是基于ubuntu创建的。
$ docker ps --filter ancestor=ubuntu-c1 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 919e1179bdb8 ubuntu-c1 "top" About a minute ago Up About a minute admiring_lovelace
匹配基于ubuntu,版本12.04.5镜像的容器:
$ docker ps --filter ancestor=ubuntu:12.04.5 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 82a598284012 ubuntu:12.04.5 "top" 3 minutes ago Up 3 minutes sleepy_bose
下面匹配基于数据层d0e008c6cf02或在数据层堆栈中有这个数据层的镜像的容器。
$ docker ps --filter ancestor=d0e008c6cf02 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 82a598284012 ubuntu:12.04.5 "top" 3 minutes ago Up 3 minutes sleepy_bose
before过滤器显示在给定容器id或名称之前创建的容器。例如,目前有这些容器:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9c3527ed70ce busybox "top" 14 seconds ago Up 15 seconds desperate_dubinsky 4aace5031105 busybox "top" 48 seconds ago Up 49 seconds focused_hamilton 6e63f6ff38b0 busybox "top" About a minute ago Up About a minute distracted_fermat
过滤在容器9c3527ed70ce之前创建的容器:
$ docker ps -f before=9c3527ed70ce CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4aace5031105 busybox "top" About a minute ago Up About a minute focused_hamilton 6e63f6ff38b0 busybox "top" About a minute ago Up About a minute distracted_fermat
since过滤器显示在给定容器id或名称之后创建的容器。例如,过滤出在6e63f6ff38b0之后创建的容器:
$ docker ps -f since=6e63f6ff38b0 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9c3527ed70ce busybox "top" 10 minutes ago Up 10 minutes desperate_dubinsky 4aace5031105 busybox "top" 10 minutes ago Up 10 minutes focused_hamilton
volume过滤器显示挂载有指定数据卷或有一个数据卷挂载到指定路径的容器:
$ docker ps --filter volume=remote-volume --format "table {{.ID}} {{.Mounts}}" CONTAINER ID MOUNTS 9c3527ed70ce remote-volume $ docker ps --filter volume=/data --format "table {{.ID}} {{.Mounts}}" CONTAINER ID MOUNTS 9c3527ed70ce remote-volume
network过滤器显示连接到指定网络的容器。
下面过滤出匹配连接到网络为net1的容器:
$ docker run -d --net=net1 --name=test1 ubuntu top $ docker run -d --net=net2 --name=test2 ubuntu top $ docker ps --filter network=net1 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9d4893ed80fe ubuntu "top" 10 minutes ago Up 10 minutes test1
network过滤器可以基于网络名称和id来匹配。下面的示例显示连接到net1网络的容器,使用的是网络id来匹配:
$ docker network inspect --format "{{.ID}}" net1 8c0b4110ae930dbe26b258de9bc34a03f98056ed6f27f991d32919bfe401d7c5 $ docker ps --filter network=8c0b4110ae930dbe26b258de9bc34a03f98056ed6f27f991d32919bfe401d7c5 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9d4893ed80fe ubuntu "top" 10 minutes ago Up 10 minutes test1
格式化选项(–format)使用Go模板来美化打印容器输出。
Go模板有效的占位符如下:
示例1:
$ docker ps --format "{{.ID}}: {{.Command}}" a87ecb4f327c: /bin/sh -c #(nop) MA 01946d9d34d8: /bin/sh -c #(nop) MA c1d3b0166030: /bin/sh -c yum -y up 41d50ecd2f57: /bin/sh -c #(nop) MA
示例2:
$ docker ps --format "table {{.ID}} {{.Labels}}" CONTAINER ID LABELS a87ecb4f327c com.docker.swarm.node=ubuntu,com.docker.swarm.storage=ssd 01946d9d34d8 c1d3b0166030 com.docker.swarm.node=debian,com.docker.swarm.cpu=6 41d50ecd2f57 com.docker.swarm.node=fedora,com.docker.swarm.cpu=3,com.docker.swarm.storage=ssd