Docker-PS命令解析

查看 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 指令:

相關文章
相關標籤/搜索