?
本文檔使用 php中文網手冊 發(fā)布
列出容器
docker ps [OPTIONS]
名字,簡寫 | 默認 | 描述 |
---|---|---|
--all, -a | false | 顯示所有容器(默認顯示正在運行) |
--filter, -f | 根據提供的條件過濾輸出 | |
--format | 漂亮的打印容器使用Go模板 | |
--last, -n | -1 | 顯示最后創(chuàng)建的容器(包括所有狀態(tài)) |
--latest, -l | false | 顯示最新創(chuàng)建的容器(包括所有狀態(tài)) |
--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/tcp
在PORTS
列中。
過濾標志(-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或名稱之前或之后創(chuàng)建的容器 |
volumn | 過濾運行已安裝給定卷或綁定安裝的容器。 |
network | 過濾運行連接到給定網絡的容器。 |
publish or expose | 過濾發(fā)布或公開給定端口的容器。 |
health | 一個健康的|不健康的。根據其健康檢查狀態(tài)過濾容器。 |
isolation | 僅限Windows守護進程。其中一個是 default|process|hyperv。 |
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
過濾器上的容器的名字的全部或部分匹配。
以下過濾器將使用包含該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
exited
過濾器匹配的存在狀態(tài)代碼容器。例如,要過濾已成功退出的容器:
$ 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
你可以使用一個過濾器來定位退出狀態(tài)為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
狀態(tài):
init
容器的進程被手動終止
docker kill
終止容器
Docker守護進程重啟會終止所有正在運行的容器
status
過濾器的狀態(tài)相匹配的容器。您可以使用篩選created
,restarting
,running
,removing
,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
則使用標簽。例如,要篩選使用最新ubuntu
映像的容器,請執(zhí)行以下操作:
$ 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.5CONTAINER 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或名稱容器之前創(chuàng)建的容器。例如,創(chuàng)建這些容器:
$ 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
過濾器只顯示自定id或名稱的容器中創(chuàng)建容器。例如,使用與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
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
過濾器僅顯示了連接到網絡的具有給定名稱或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
和expose
過濾器僅顯示已發(fā)布或暴露端口與給定的端口號,端口范圍,and/or協議的容器。默認協議是tcp
沒有指定的時候。
以下過濾器匹配發(fā)布端口為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=80CONTAINER 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 | 容器創(chuàng)建的時間。 |
.RunningFor | 自從容器啟動以來的耗時。 |
.Ports | 暴露的端口。 |
.Status | 容器狀態(tài)。 |
.Size | 容器磁盤大小。 |
.Names | 容器名稱。 |
.Labels | 所有分配給容器的標簽。 |
.Label | 此容器的特定標簽的值。例如'{{.Label“com.docker.swarm.cpu”}}' |
.Mounts | 安裝在此容器中的卷的名稱。 |
.Networks | 連接到此容器的網絡的名稱。 |
當使用--format
選項時,ps
命令將完全按照模板聲明輸出數據,或者在使用table
指令時也包含列標題。
下面的示例使用的模板沒有報頭,并輸出ID
與Command
由所有正在運行的容器冒號分隔條目:
$ 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=641d50ecd2f57 com.docker.swarm.node=fedora,com.docker.swarm.cpu=3,com.docker.swarm.storage=ssd