查看 docker 容器,必然要用到 docker ps 命令。其基本格式爲:html
docker ps [OPTIONS]git
關鍵在於 OPTIONS(選項):github
1golang
常見用法正則表達式
1. 最多見的用法docker
$ docker pstcp
顯示當前正在運行的容器。unix
在 PORTS 一列,若是暴露的端口是連續的,還會被合併在一塊兒,例如一個容器暴露了3個 TCP 端口:100,101,102,則會顯示爲 100-102/tcp。rest
2. 顯示全部狀態的容器orm
$ docker ps -a
容器的狀態共有 7 種:created|restarting|running|removing|paused|exited|dead。
3. 顯示最後被建立的 n 個容器
$ docker ps -n 3
注意,這裏不限狀態。
4. 顯示最後被建立的容器
$ docker ps -l
至關於 docker ps -n 1。
5. 顯示完整輸出
$ docker ps --no-trunc
即不會截斷輸出。該選項有點長,其中 trunc 算是 truncate 的縮寫。
6. 只顯示容器 ID
$ docker ps -q
清理容器時很是好用,filter 過濾顯示一節有具體實例。
7. 顯示容器文件大小
$ docker ps -s
該命令很實用,能夠得到 2 個數值:一個是容器真實增長的大小,一個是整個容器的虛擬大小。
查看源碼(https://github.com/moby/moby/blob/master/daemon/getsize_unix.go)後可知,容器虛擬大小 = 容器真實增長大小 + 容器鏡像大小。
2
高級用法
Filter 過濾顯示
若是容器數量過多,或者想排除干擾容器,能夠經過 --filter 或 -f 選項,過濾須要顯示的容器。
當前支持的過濾條件很是豐富,包括:
條件雖多,但萬變不離其宗,只要再記住如下 3 條準則:
1. 選項後跟的都是鍵值對 key=value (可不帶引號),若是有多個過濾條件,就屢次使用 filter 選項。例如:
docker ps --filter id=a1b2c3 --filter name=bingohuang
2. 相同條件之間的關係是或,不一樣條件之間的關係是與。例如:
docker ps --filter name=bingo --filter name=huang --filter status=running
以上過濾條件會找出 name 包含 bingo 或 huang 而且 status 爲 running 的容器。
3. id 和 name,支持正則表達式,使用起來很是靈活。例如:
docker ps --filter name=^/bingohuang$
精確匹配 name 爲 bingohuang 的容器。注意,容器實際名稱,開頭是有一個正斜線 / ,可用 docker inspect 一看便知。
docker ps --filter name=.*bingohuang.*
匹配 name 包含 bingohuang 的容器,和 --filter name=bingohuang 一個效果。
最後, 舉一個複雜點的例子,用於清理名稱包含 bingohuang,且狀態爲 exited 或 dead 的容器:
docker rm $(docker ps -q --filter name=.*bingohuang.* --filter status=exited --filter status=dead2>/dev/null)
Format 格式化顯示
若是想自定義顯示容器字段,能夠用格式化選項 --format 。
基於 Go template(https://golang.org/pkg/html/template/)語法,可用的佔位符以下:
1. 當使用了 --format 選項,那麼 ps 命令只會輸出 template 中指定的內容:
$ 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. 若是想帶上表格列頭,須要再 template 中加上 table 指令: