非常教程

Docker 17参考手册

引擎: CLI | Engine: CLI

docker ps

描述

列出容器

用法

docker ps [OPTIONS]

选项

名字,简写

默认

描述

--all, -a

false

显示所有容器(默认显示正在运行)

--filter, -f

根据提供的条件过滤输出

--format

漂亮的打印容器使用Go模板

--last, -n

-1

显示最后创建的容器(包括所有状态)

--latest, -l

false

显示最新创建的容器(包括所有状态)

--no-trunc

false

不要截断输出

--quiet, -q

false

只显示数字ID

--size, -s

false

显示总文件大小

父命令

命令

描述

docker

Docker CLI的基本命令。

实例

防止截断输出

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

$ docker ps

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如果可能,将暴露的端口分组到单个范围。例如,100, 101, 102显示TCP端口的容器显示100-102/tcpPORTS列中。

过滤

过滤标志(-f--filter)格式是一key=value对。如果有多个过滤器,则传递多个标志(例如--filter "foo=bar" --filter "bif=baz"

目前支持的过滤器是:

过滤

描述

id

容器的ID

name

容器的名称

label

表示键或键值对的任意字符串

existed

表示容器退出代码的整数。仅适用于--all。

status

一个正在重新开始运行

ancestor

筛选共享给定图像的容器作为祖先。表示为<image-name>:<tag>,<image id>或image @ digest

before or since

过滤在给定容器ID或名称之前或之后创建的容器

volumn

过滤运行已安装给定卷或绑定安装的容器。

network

过滤运行连接到给定网络的容器。

publish or expose

过滤发布或公开给定端口的容器。

health

一个健康的|不健康的。根据其健康检查状态过滤容器。

isolation

仅限Windows守护进程。其中一个是 default|process|hyperv。

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

以下过滤器匹配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 second                             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

existed

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守护进程重启会终止所有正在运行的容器

status

status过滤器的状态相匹配的容器。您可以使用筛选createdrestartingrunningremovingpausedexiteddead。例如,要过滤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

如果您未指定taglatest则使用标签。例如,要筛选使用最新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

$ 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

Create time

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

过滤before将给:

$ 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或名称的容器中创建容器。例如,使用与before过滤器中相同的容器:

$ 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

volumn

volume过滤器仅显示装入一个特定的体积或具有安装在一个特定的路径的容积的容器:

$ docker ps --filter volume=remote-volume --format "table {{.ID}}\t{{.Mounts}}"
CONTAINER ID        MOUNTS
9c3527ed70ce        remote-volume

$ docker ps --filter volume=/data --format "table {{.ID}}\t{{.Mounts}}"
CONTAINER ID        MOUNTS
9c3527ed70ce        remote-volume

network

network过滤器仅显示了连接到网络的具有给定名称或ID的容器。

以下过滤器匹配连接到名称包含的网络的所有容器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

网络过滤器匹配网络的名称和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

publish and expose

publishexpose过滤器仅显示已发布或暴露端口与给定的端口号,端口范围,and/or协议的容器。默认协议是tcp没有指定的时候。

以下过滤器匹配发布端口为80的所有容器:

$ docker run -d --publish=80 busybox top
$ docker run -d --expose=8080 busybox top

$ docker ps -a

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                   NAMES
9833437217a5        busybox             "top"               5 seconds ago       Up 4 seconds        8080/tcp                dreamy_mccarthy
fc7e477723b7        busybox             "top"               50 seconds ago      Up 50 seconds       0.0.0.0:32768->80/tcp   admiring_roentgen

$ docker ps --filter publish=80

CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS                   NAMES
fc7e477723b7        busybox             "top"               About a minute ago   Up About a minute   0.0.0.0:32768->80/tcp   admiring_roentgen

以下过滤器匹配所有具有以下范围的暴露TCP端口的容器8000-8080

$ docker ps --filter expose=8000-8080/tcp

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
9833437217a5        busybox             "top"               21 seconds ago      Up 19 seconds       8080/tcp            dreamy_mccarthy

以下过滤器匹配具有公开UDP端口的所有容器80

$ docker ps --filter publish=80/udp

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

格式化

格式化选项(--format)使用Go模板漂亮地打印容器输出。

Go模板的有效占位符列在下面:

占位符

描述

.ID

容器ID

.Image

图像ID

.Command

引用的命令

.CreatedAt

容器创建的时间。

.RunningFor

自从容器启动以来的耗时。

.Ports

暴露的端口。

.Status

容器状态。

.Size

容器磁盘大小。

.Names

容器名称。

.Labels

所有分配给容器的标签。

.Label

此容器的特定标签的值。例如'{{.Label“com.docker.swarm.cpu”}}'

.Mounts

安装在此容器中的卷的名称。

.Networks

连接到此容器的网络的名称。

当使用--format选项时,ps命令将完全按照模板声明输出数据,或者在使用table指令时也包含列标题。

下面的示例使用的模板没有报头,并输出IDCommand由所有正在运行的容器冒号分隔条目:

$ 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

要以表格格式列出所有正在运行的容器及其标签,可以使用:

$ docker ps --format "table {{.ID}}\t{{.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

引擎: CLI | Engine: CLI相关

1.守护进程CLI参考(dockerd)(引擎) | Daemon CLI reference (dockerd) (Engine)
2.docker
3.docker attach
4.docker build
5.docker checkpoint
6.docker checkpoint create
7.docker checkpoint ls
8.docker checkpoint rm
9.docker commit
10.docker config
11.docker config create
12.docker config inspect
13.docker config ls
14.docker config rm
15.docker container
16.docker container attach
17.docker container commit
18.docker container cp
19.docker container create
20.docker container diff
21.docker container exec
22.docker container export
23.docker container inspect
24.docker container kill
25.docker container logs
26.docker container ls
27.docker container pause
28.docker container port
29.docker container prune
30.docker container rename
31.docker container restart
32.docker container rm
33.docker container run
34.docker container start
35.docker container stats
36.docker container stop
37.docker container top
38.docker container unpause
39.docker container update
40.docker container wait
41.docker cp
42.docker create
43.docker deploy
44.docker diff
45.docker events
46.docker exec
47.docker export
48.docker history
49.docker image
50.docker image build
51.docker image history
52.docker image import
53.docker image inspect
54.docker image load
55.docker image ls
56.docker image prune
57.docker image pull
58.docker image push
59.docker image rm
60.docker image save
61.docker image tag
62.docker images
63.docker import
64.docker info
65.docker inspect
66.docker kill
67.docker load
68.docker login
69.docker logout
70.docker logs
71.docker network
72.docker network connect
73.docker network create
74.docker network disconnect
75.docker network inspect
76.docker network ls
77.docker network prune
78.docker network rm
79.docker node
80.docker node demote
81.docker node inspect
82.docker node ls
83.docker node promote
84.docker node ps
85.docker node rm
86.docker node update
87.docker pause
88.docker plugin
89.docker plugin create
90.docker plugin disable
91.docker plugin enable
92.docker plugin inspect
93.docker plugin install
94.docker plugin ls
95.docker plugin push
96.docker plugin rm
97.docker plugin set
98.docker plugin upgrade
99.docker port
100.docker pull
Docker 17

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

主页 https://docker.com/
源码 https://github.com/docker/docker
版本 17
发布版本 17.06