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

  1. Usage: docker ps [OPTIONS]
  2.  
  3. List containers
  4.  
  5. Options:
  6.   -a, --all             Show all containers (default shows just running)
  7.   -f, --filter value    Filter output based on conditions provided (default [])
  8.                         - exited=<int> an exit code of <int>
  9.                         - label=<key> or label=<key>=<value>
  10.                         - status=(created|restarting|running|paused|exited)
  11.                         - name=<string> a container's name
  12.                         - id=<ID> a container's ID
  13.                         - before=(<container-name>|<container-id>)
  14.                         - since=(<container-name>|<container-id>)
  15.                         - ancestor=(<image-name>[:tag]|<image-id>|<image@digest>)
  16.                           containers created from an image or a descendant.
  17.       --format string   Pretty-print containers using a Go template
  18.       --help            Print usage
  19.   -n, --last int        Show n last created containers (includes all states) (default -1)
  20.   -l, --latest          Show the latest created container (includes all states)
  21.       --no-trunc        Don't truncate output
  22.   -q, --quiet           Only display numeric IDs
  23.   -s, --size            Display total file sizes

运行docker ps –no-trunc显示两2个链接容器。

  1. $ docker ps --no-trunc
  2.  
  3. CONTAINER ID        IMAGE                        COMMAND                CREATED              STATUS              PORTS               NAMES
  4. 4c01db0b339c        ubuntu:12.04                 bash                   17 seconds ago       Up 16 seconds       3300-3310/tcp       webapp
  5. d7886598dbe2        crosbymichael/redis:latest   /redis-server --dir    33 minutes ago       Up 33 minutes       6379/tcp            redis,webapp/db

docker ps命令默认只显示运行中的容器。要查看所有的容器,使用-a (或–all)标志:

  1. $ 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不管它什么值来匹配容器。

    1. $ docker ps --filter "label=color"
    2.  
    3. CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    4. 673394ef1d4c        busybox             "top"               47 seconds ago      Up 45 seconds                           nostalgic_shockley
    5. d85756f57265        busybox             "top"               52 seconds ago      Up 51 seconds                           high_albattani

    下面过滤器指定label color及值blue来匹配容器。

    1. $ docker ps --filter "label=color=blue"
    2.  
    3. CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
    4. d85756f57265        busybox             "top"               About a minute ago   Up About a minute                       high_albattani

    Name

    name过滤器全匹配或部分匹配容器名称。
    下面的过滤器匹配容器名称包含nostalgic_stallman字符串的容器。

    1. $ docker ps --filter "name=nostalgic_stallman"
    2.  
    3. CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    4. 9b6247364a03        busybox             "top"               2 minutes ago       Up 2 minutes                            nostalgic_stallman

    也可以匹配名称中的部分字符:

    1. $ docker ps --filter "name=nostalgic"
    2.  
    3. CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    4. 715ebfcee040        busybox             "top"               3 seconds ago       Up 1 seconds                            i_am_nostalgic
    5. 9b6247364a03        busybox             "top"               7 minutes ago       Up 7 minutes                            nostalgic_stallman
    6. 673394ef1d4c        busybox             "top"               38 minutes ago      Up 38 minutes                           nostalgic_shockley

    Exited

    exited过滤器基于容器退出码匹配。例如,过滤那么成功退出的容器。

    1. $ docker ps -a --filter 'exited=0'
    2.  
    3. CONTAINER ID        IMAGE             COMMAND                CREATED             STATUS                   PORTS                      NAMES
    4. ea09c3c82f6e        registry:latest   /srv/run.sh            2 weeks ago         Exited (0) 2 weeks ago   127.0.0.1:5000->5000/tcp   desperate_leakey
    5. 106ea823fe4e        fedora:latest     /bin/sh -c 'bash -l'   2 weeks ago         Exited (0) 2 weeks ago                              determined_albattani
    6. 48ee228c9464        fedora:20         bash                   2 weeks ago         Exited (0) 2 weeks ago                              tender_torvalds

    Killed容器

    可以使用一个过滤器来过滤出那么以退出码137退出的容器,意味着此容器收到了SIGKILL(9)信号。

    1. $ docker ps -a --filter 'exited=137'
    2. CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS                       PORTS               NAMES
    3. b3e1c0ed5bfe        ubuntu:latest       "sleep 1000"           12 seconds ago      Exited (137) 5 seconds ago                       grave_kowalevski
    4. 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的容器:

    1. $ docker ps --filter status=running
    2.  
    3. CONTAINER ID        IMAGE                  COMMAND             CREATED             STATUS              PORTS               NAMES
    4. 715ebfcee040        busybox                "top"               16 minutes ago      Up 16 minutes                           i_am_nostalgic
    5. d5c976d3c462        busybox                "top"               23 minutes ago      Up 23 minutes                           top
    6. 9b6247364a03        busybox                "top"               24 minutes ago      Up 24 minutes                           nostalgic_stallman

    过滤paused容器:

    1. $ docker ps --filter status=paused
    2.  
    3. CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
    4. 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镜像的容器:

    1. $ docker ps --filter ancestor=ubuntu
    2.  
    3. CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
    4. 919e1179bdb8        ubuntu-c1           "top"               About a minute ago   Up About a minute                       admiring_lovelace
    5. 5d1e4a540723        ubuntu-c2           "top"               About a minute ago   Up About a minute                       admiring_sammet
    6. 82a598284012        ubuntu              "top"               3 minutes ago        Up 3 minutes                            sleepy_bose
    7. bab2a34ba363        ubuntu              "top"               3 minutes ago        Up 3 minutes                            focused_yonath

    匹配基于ubuntu-c1镜像的容器,在这里ubuntu-c1是基于ubuntu创建的。

    1. $ docker ps --filter ancestor=ubuntu-c1
    2.  
    3. CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
    4. 919e1179bdb8        ubuntu-c1           "top"               About a minute ago   Up About a minute                       admiring_lovelace

    匹配基于ubuntu,版本12.04.5镜像的容器:

    1. $ docker ps --filter ancestor=ubuntu:12.04.5
    2.  
    3. CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
    4. 82a598284012        ubuntu:12.04.5      "top"               3 minutes ago        Up 3 minutes                            sleepy_bose

    下面匹配基于数据层d0e008c6cf02或在数据层堆栈中有这个数据层的镜像的容器。

    1. $ docker ps --filter ancestor=d0e008c6cf02
    2.  
    3. CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
    4. 82a598284012        ubuntu:12.04.5      "top"               3 minutes ago        Up 3 minutes                            sleepy_bose

    Before

    before过滤器显示在给定容器id或名称之前创建的容器。例如,目前有这些容器:

    1. $ docker ps
    2.  
    3. CONTAINER ID        IMAGE       COMMAND       CREATED              STATUS              PORTS              NAMES
    4. 9c3527ed70ce        busybox     "top"         14 seconds ago       Up 15 seconds                          desperate_dubinsky
    5. 4aace5031105        busybox     "top"         48 seconds ago       Up 49 seconds                          focused_hamilton
    6. 6e63f6ff38b0        busybox     "top"         About a minute ago   Up About a minute                      distracted_fermat

    过滤在容器9c3527ed70ce之前创建的容器:

    1. $ docker ps -f before=9c3527ed70ce
    2.  
    3. CONTAINER ID        IMAGE       COMMAND       CREATED              STATUS              PORTS              NAMES
    4. 4aace5031105        busybox     "top"         About a minute ago   Up About a minute                      focused_hamilton
    5. 6e63f6ff38b0        busybox     "top"         About a minute ago   Up About a minute                      distracted_fermat

    Since

    since过滤器显示在给定容器id或名称之后创建的容器。例如,过滤出在6e63f6ff38b0之后创建的容器:

    1. $ docker ps -f since=6e63f6ff38b0
    2.  
    3. CONTAINER ID        IMAGE       COMMAND       CREATED             STATUS              PORTS               NAMES
    4. 9c3527ed70ce        busybox     "top"         10 minutes ago      Up 10 minutes                           desperate_dubinsky
    5. 4aace5031105        busybox     "top"         10 minutes ago      Up 10 minutes                           focused_hamilton

    Volume

    volume过滤器显示挂载有指定数据卷或有一个数据卷挂载到指定路径的容器:

    1. $ docker ps --filter volume=remote-volume --format "table {{.ID}}\t{{.Mounts}}"
    2. CONTAINER ID        MOUNTS
    3. 9c3527ed70ce        remote-volume
    4.  
    5. $ docker ps --filter volume=/data --format "table {{.ID}}\t{{.Mounts}}"
    6. CONTAINER ID        MOUNTS
    7. 9c3527ed70ce        remote-volume

    Network

    network过滤器显示连接到指定网络的容器。
    下面过滤出匹配连接到网络为net1的容器:

    1. $ docker run -d --net=net1 --name=test1 ubuntu top
    2. $ docker run -d --net=net2 --name=test2 ubuntu top
    3.  
    4. $ docker ps --filter network=net1
    5.  
    6. CONTAINER ID        IMAGE       COMMAND       CREATED             STATUS              PORTS               NAMES
    7. 9d4893ed80fe        ubuntu      "top"         10 minutes ago      Up 10 minutes                           test1

    network过滤器可以基于网络名称和id来匹配。下面的示例显示连接到net1网络的容器,使用的是网络id来匹配:

    1. $ docker network inspect --format "{{.ID}}" net1
    2.  
    3.  
    4. 8c0b4110ae930dbe26b258de9bc34a03f98056ed6f27f991d32919bfe401d7c5
    5.  
    6. $ docker ps --filter network=8c0b4110ae930dbe26b258de9bc34a03f98056ed6f27f991d32919bfe401d7c5
    7.  
    8. CONTAINER ID        IMAGE       COMMAND       CREATED             STATUS              PORTS               NAMES
    9. 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:

    1. $ docker ps --format "{{.ID}}: {{.Command}}"
    2.  
    3.  
    4. a87ecb4f327c: /bin/sh -c #(nop) MA
    5. 01946d9d34d8: /bin/sh -c #(nop) MA
    6. c1d3b0166030: /bin/sh -c yum -y up
    7. 41d50ecd2f57: /bin/sh -c #(nop) MA

    示例2:

    1. $ docker ps --format "table {{.ID}}\t{{.Labels}}"
    2.  
    3.  
    4. CONTAINER ID        LABELS
    5. a87ecb4f327c        com.docker.swarm.node=ubuntu,com.docker.swarm.storage=ssd
    6. 01946d9d34d8
    7. c1d3b0166030        com.docker.swarm.node=debian,com.docker.swarm.cpu=6
    8. 41d50ecd2f57        com.docker.swarm.node=fedora,com.docker.swarm.cpu=3,com.docker.swarm.storage=ssd
    标签:容器Docker 发布于:2019-11-19 10:29:48