手机版

Docker命令行参考(24) – docker ps列出容器

时间:2020-05-07 来源:互联网 编辑:宝哥软件园 浏览:
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”)
目前支持的过滤有:

id(容器id) label(label=或label=>) name(容器名称) exited(整数 – 容器退出码。只在使用–all才有用) status (created restarting running paused exited dead) ancestor([:], or ) – 过滤从指定镜像创建的容器。 before (容器的名称或id) – 过滤在给定id或名称之前创建的容器。 since (容器的名称或id) – 过滤在给定id或名称之后创建的容器。 isolation (default process hyperv) (Windows daemon only) volume (数据卷名称或挂载点) – 过滤挂载有指定数据卷的容器。 network (网络id或名称) – 过滤连接到指定网络的容器。

Label

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

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

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

Killed容器

可以使用一个过滤器来过滤出那么以退出码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过滤器通过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

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

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

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

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

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模板有效的占位符如下:

.ID 容器ID .Image 镜像ID .Command Quoted command .CreatedAt 创建容器的时间点. .RunningFor 从容器创建到现在过去的时间. .Ports 暴露的端口. .Status 容器状态. .Size 容器占用硬盘大小. .Names 容器名称. .Labels 容器所有的标签. .Label 指定label的值 例如'{{.Label “com.docker.swarm.cpu”}}’ .Mounts 挂载到这个容器的数据卷名称

示例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

版权声明:Docker命令行参考(24) – docker ps列出容器是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。

相关文章推荐