AboutDockerProfessional illustrations
Docker ps 指令基礎教學
好喇,咁我哋就由最基礎嘅 Docker ps 指令開始講起。作為一個 Docker 用家,無論你係新手定老手,docker ps 呢個命令絕對係你每日都會用到,好似返工開電腦第一件事就係 check 電郵咁,管理容器嘅第一步就係用 docker ps 去睇吓而家個 Docker Engine 入面有啲咩容器行緊。簡單嚟講,docker ps 命令就係用嚟列出目前正在運行嘅 容器。佢係 Docker CLI 裡面最基本又最核心嘅指令之一,你可以當佢係你同 Docker Daemon 溝通嘅第一道橋樑,幫你快速掌握系統嘅狀況。
咁點樣用呢?好簡單,你打開 terminal,無論你係用緊 Ubuntu 定其他系統,直接打 docker ps 然後按 Enter 就得。佢會即刻彈個表格出嚟,呢個就係最基本嘅 容器列表。個表格通常會有幾欄重要資訊,我哋逐一拆解吓。第一欄係 CONTAINER ID,呢個係每個容器獨一無二嘅身份證,通常只會顯示頭幾個字符,但已經足夠你用來辨認同操作指定容器。跟住係 IMAGE 欄,話你知呢個容器係由邊個映像檔創建出嚟嘅,例如係 nginx:latest 定係 postgres:15。COMMAND 欄就顯示容器啟動時執行嘅主要指令。CREATED 同 STATUS 就分別講咗容器創建咗幾耐,同埋而家個 容器狀態 係點,例如係 "Up 5 minutes"(運行咗5分鐘)或者 "Exited (0) 2 hours ago"(2小時前正常退出),呢個狀態監控對 容器管理 同 container lifecycle 追蹤好緊要。最後兩欄 PORTS 同 NAMES 就顯示容器映射咗去主機邊個埠口,同埋個容器叫咩名,如果當初無指定,Docker 就會自動生成個得意(有時幾騎呢)嘅名俾佢。
當然,齋打 docker ps 只係見到冰山一角,因為佢預設只顯示「正在運行」嘅容器。咁如果我想睇埋所有嘅容器,包括已經停止咗嘅呢?呢個時候就要加參數喇,即係 docker ps -a。呢個 -a 參數就係 "all" 嘅意思,可以列出所有狀態嘅容器,對於全面檢視同清理系統好有用。呢啲就係 命令參數 嘅威力,令到同一個 CLI命令 可以做到更精細嘅工作。另外,個表格嘅輸出格式都可以自訂,你可以用 --format 參數去指定只顯示某幾欄,甚至用 JSON格式 輸出,方便你寫 script 去處理。例如你想純粹拎晒所有容器嘅 ID,就可以用格式化輸出功能,呢啲進階用法喺自動化運維時好幫到手。
講到實戰例子,假設你用 docker run -d 呢個命令在後台運行咗幾個容器,之後你想檢查佢哋係咪真係行緊,或者想搵返某個容器嘅 CONTAINER ID 去執行其他操作(例如睇 docker logs 或者進入容器),docker ps 就係你嘅最佳拍檔。又例如,你個系統行緊十幾個容器,你想快速搵出某個特定映像檔創建出嚗嘅所有容器,你就可以用 docker ps --filter 呢個 container filtering 功能,例如 docker ps -a --filter "ancestor=nginx",佢就會幫你篩選出所有由 nginx 映像檔衍生出嚟嘅容器,唔使你自己用眼逐個搵,管理效率即刻提升。呢啲 命令示例 同技巧,官方嘅 Docker Docs 或者好多技術 GitBook 都有詳細記載,但記住我哋而家係2026年,Docker 指令集可能已經有啲更新同優化,所以最好都係定期睇吓最新官方文件,確保自己跟得上。
總括呢個段落,docker ps 雖然睇落簡單,但佢係你進行 container inspection 同後續所有 容器管理 操作嘅基石。由最基本嘅列表,到用各種參數去做篩選、格式化,都係圍繞住呢個核心 Docker CLI 指令。熟練掌握 docker ps 嘅各種用法,就好似學識咗點樣有效地睇你部 Docker 主機嘅「工作管理員」一樣,對於維護同除錯你嘅容器化環境,係不可或缺嘅第一步。記住,所有複雜嘅操作,都係由清楚知道「而家有啲咩容器行緊」開始嘅。
About容器Professional illustrations
2026年最新指令參數詳解
好啦,各位Docker用家,而家就同大家深入拆解下2026年最新嘅 docker ps 命令 參數詳解。呢個 CLI命令 睇落簡單,但其實內藏好多實用參數,識得靈活運用,對於日常 容器管理 同監控真係事半功倍。我哋唔再係只係打個 docker ps 睇吓就算,而係要學識點樣精準搵出想要嘅資訊。
首先,最基本嘅 命令語法 你一定要知。docker ps 預設只會顯示運行緊嘅 容器,但如果你想睇埋所有(包括已停止)嘅容器,就要加 -a 參數。呢個係老生常談,但2026年嘅 Docker Engine 依然係咁。不過,而家我哋更著重點樣格式化輸出,令到個 容器列表 更易讀。例如,你可以用 --format 參數,自定義顯示嘅欄位。唔想睇晒成串 CONTAINER ID?可以用 --format "table {{.ID}}\t{{.Image}}\t{{.Status}}\t{{.Names}}",咁樣個輸出就會整齊好多,只顯示你關心嘅 ID、IMAGE、STATUS 同 NAMES。對於要管理大量容器嘅系統管理員嚟講,自定義格式可以節省好多眼力。
跟住落嚟,要講吓點樣用參數去過濾 (container filtering) 同檢查。呢個係 2026年最新指令參數 應用嘅精髓。假設你個 Ubuntu 伺服器上面行緊幾十個容器,你想快速搵出某個特定映像嘅容器,或者狀態係「Exited」嘅容器,點算?呢個時候 --filter 參數就係你嘅好朋友。例如 docker ps -a --filter "status=exited" 可以列出所有已退出嘅容器,方便你清理。又或者 docker ps --filter "ancestor=nginx:latest" 可以快速搵出所有用緊最新版nginx映像行緊嘅容器。仲可以根據標籤 (label)、名稱 (name) 嚟過濾,呢啲命令參數 對於容器生命周期管理真係不可或缺。
另外,監控同埋記錄都好重要。雖然睇 容器狀態 係 docker ps 嘅本職,但你想知多啲個容器背後嘅細節,就要識得配合其他 Docker CLI 命令。例如,你喺 docker ps 度見到某個容器嘅 STATUS 顯示「Up 2 days」,但你想知佢內部嘅資源消耗或者詳細設定,下一步就可能會用 docker inspect 呢個 container inspection 命令去深挖。又或者,見到個容器狀態唔對路,你會用 docker logs 去睇吓應用程式輸出咩錯誤訊息。所以,docker ps 好多時係你進行容器管理嘅第一步,係一個診斷嘅起點。
最後,不得不提吓輸出格式嘅進階玩法。除咗用 --format 整靚個表格,你仲可以要求輸出做 JSON格式,方便其他程式或者工具(例如 Spacelift 呢類現代化基建管理平台)去處理。命令就係 docker ps --format json。呢種機器友好 (machine-friendly) 嘅輸出方式,喺自動化腳本同CI/CD流程裡面特別有用。總括嚟講,熟讀 Docker Docs(或者你鍾意睇 GitBook 整理嘅版本)裡面關於 docker ps 命令 嘅參數說明,絕對能提升你操作 Docker Container 嘅效率。記住,唔好死記硬背所有參數,而係要理解每個參數點樣幫你解決具體問題,例如點樣快速篩選、點樣獲取特定資訊用於報告,咁先至係真正掌握 Docker CLI 嘅力量。
AboutCONTAINERProfessional illustrations
點樣用過濾器搵容器
好啦,講完基本嘅 docker ps 命令 點用,係時候深入啲,講下點樣用過濾器搵容器。呢個功能真係幫你慳返唔少時間,尤其係當你部 Docker Engine 行緊十幾廿個 容器 嘅時候,你唔使再係成個 容器列表 入面用肉眼逐個 CONTAINER ID 去搵,直接落 filter 就可以精準定位。
點解過濾咁重要?想像下你個 Ubuntu server 上面,有啲容器係行緊 web server,有啲係 database,有啲可能係測試緊嘅臨時容器。你想快速知道所有而家「運行緊」嘅 web server 容器,或者想搵出所有用某個特定 IMAGE 開嘅容器,呢個時候就要靠 docker ps 嘅過濾功能。佢係 Docker CLI 入面好強大嘅一環,等你可以根據 容器狀態、標籤、名稱甚至係掛載點呢啲條件去篩選,對於日常 容器管理 同埋 container inspection 嚟講,係不可或缺嘅技巧。
Docker ps 命令 嘅過濾器係用 --filter 或者 -f 呢個 命令參數 嚟啟動。個 命令語法 好簡單,就係 docker ps --filter "key=value"。你可以一次過用多個 filter,佢哋之間係「AND」嘅關係,即係要符合晒所有條件先會顯示出嚟。最常用嘅過濾條件包括:
status:按 容器狀態 過濾,例如 running、exited、paused、created。你想睇下所有已經停止咗嘅容器有邊啲,就可以用 docker ps -a --filter "status=exited"。 name:根據容器 NAME 或者 NAMES 嚟過濾。你可以用全名,亦可以用部分名,例如 docker ps --filter "name=web" 就會搵出所有名稱入面有「web」字眼嘅容器。 label:呢個係最靈活同最有威力嘅過濾方式!你喺 docker run 或者 Dockerfile 入面可以自定義標籤 (label),例如 environment=production 或者 app.version=2.1。之後你就可以用 docker ps --filter "label=environment=production" 嚟搵出所有生產環境嘅容器。對於複雜嘅部署,用 label 做分類同過濾係最佳實踐。 ancestor:根據個容器係由邊個 IMAGE(或者佢嘅祖先映像)創建出嚟過濾。例如 docker ps --filter "ancestor=nginx" 會列出所有基於 nginx 映像(包括 nginx:latest, nginx:alpine 等)運行緊嘅容器。 * before 同 since:根據創建時間,搵出喺某個指定容器之前或之後創建嘅容器。你需要提供個容器嘅 CONTAINER ID 或者 NAME 作為參考點。
等我舉個具體啲嘅 命令示例 畀你睇下。假設你管理緊一個微服務架構,你為唔同服務嘅容器打咗 label,例如 service=user-api、service=payment,仲有 environment=staging。而家你想睇下喺測試環境 (staging) 入面,所有同支付相關 (payment) 並且正在運行 (running) 嘅容器,個命令就會係:docker ps --filter "label=service=payment" --filter "label=environment=staging" --filter "status=running"。一落命令,CLI 即刻就會只係顯示符合呢三個條件嘅容器,一目了然,完全唔使喺成堆輸出資訊度撈針。
另外,有時你想將過濾出嚟嘅結果用另一種格式輸出,方便其他程式處理,你可以配合 --format 呢個 命令參數,將輸出變成 JSON格式。例如 docker ps --filter "status=running" --format "{{.ID}}: {{.Image}}" 就會只列出運行中容器嘅 ID 同映像名,非常簡潔。進階玩家甚至可以將呢個技巧同其他 shell 命令結合,去自動化一啲 容器生命周期 管理嘅任務。
總而言之,熟練運用 docker ps 嘅過濾功能,絕對係你從 Docker 新手進階到有效率嘅系統管理者嘅關鍵一步。佢令你對 容器列表 嘅掌控力大大提升,唔使再靠估靠撞。記得多啲去 Docker Docs 官方文度睇下,入面有齊所有 filter key 嘅詳細說明同例子,實戰時遇到複雜情況就可以去參考。
AboutIMAGEProfessional illustrations
容器狀態點樣睇同分析
好啦,而家我哋嚟到最實用嘅部分,就係點樣睇同分析你啲容器嘅狀態。喺 Docker 世界入面,容器狀態就係你了解個容器係生係死、係忙係閒嘅生命體徵。最基本、最常用嘅工具,毫無疑問就係 docker ps 命令。呢個 CLI 命令 係每個 Docker 用家每日都會打無數次嘅指令,佢就好似你個控制台嘅儀表板,一眼睇晒所有運行緊嘅 Docker Container。
淨係打 docker ps,佢會俾你一個簡潔嘅列表,列出所有正在運行(Up)嘅容器。你會見到幾個核心欄位:CONTAINER ID(容器嘅唯一身份證,通常只會顯示頭幾個字元)、IMAGE(呢個容器係用邊個映像開出嚟嘅,例如 Ubuntu 某個版本)、COMMAND(容器啟動時執行嘅主命令)、CREATED(創建咗幾耐)、STATUS(呢個最重要!顯示例如 “Up 2 hours” 或者 “Exited (0) 5 minutes ago”)、PORTS(映射咗咩端口去主機)、同埋 NAMES(容器嘅名,可能係系統隨機生成嘅,亦可以係你自己指定嘅)。呢個預設視圖已經可以幫你快速解答「我個服務行緊未?」、「佢行咗幾耐?」、「個端口有冇正確映射?」呢類基本問題。
不過,齋睇運行中嘅容器係唔夠嘅,好多時我哋都要調查吓啲出咗事、已經停止咗嘅容器。咁就要用 docker ps -a 呢個命令。加咗 -a(即係 all 嘅意思)參數之後,Docker CLI 就會顯示所有狀態嘅容器,包括已經退出(Exited)咗嘅。分析 STATUS 欄位入面嘅退出碼(例如 Exited (137))係關鍵診斷步驟,137 可能代表記憶體不足被系統殺死,1 可能代表入面嘅應用程式出錯。呢個時候,你就要配合 docker logs 命令,拎番個容器停止前嘅日誌輸出,先可以深入知道死因。
想個輸出更易讀或者針對特定需求?docker ps 命令 有好多強大嘅 命令參數 可以用。例如 docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}",呢個就係 格式化輸出 嘅威力,你可以自定義想睇嘅欄位,整一個自己最順眼嘅 容器列表。又或者,你想用 JSON格式 拎資料,方便其他腳本處理,就可以用 docker ps --format json。仲有過濾功能都好實用,例如 docker ps --filter "status=exited" 就只會顯示所有已退出嘅容器;docker ps --filter "name=web" 就會搵名入面有 “web” 字眼嘅容器。善用呢啲 命令語法,可以極大提升你 容器管理 嘅效率。
對於一啲複雜嘅部署,你可能需要知道更多底層細節,唔單止係行緊定停止咗。Docker Engine 提供嘅 docker inspect 命令(雖然唔係 docker ps 一部分,但係狀態分析嘅延伸)可以俾你拎到一個容器嘅完整配置同狀態資訊,係一個巨大嘅 JSON格式 檔案,入面由網絡設定、掛載嘅 Volume、到資源限制咩都有。呢個就係真正深入 容器生命週期 同內部狀態嘅手術刀。
總而言之,docker ps 並唔係一個單一、死板嘅命令。由最簡單嘅 docker ps,到用 -a 睇全部,再用 --filter 做精準篩選,最後用 --format 美化或轉換輸出格式,呢一系列嘅操作構成咗你監控同分析 容器狀態 嘅核心工作流。記住,STATUS 欄位係你嘅第一道警報燈,見到 “Up” 唔代表一定健康,可能入面個應用已經 hang 咗;見到 “Exited” 就要立即查 logs 同退出碼。將 docker ps 同 docker logs、docker inspect 呢啲命令組合運用,你先至可以真正做到全方位嘅容器健康管理,確保你喺 Ubuntu 或者其他主機上運行嘅服務穩穩陣陣。
AboutDocker ps 命令Professional illustrations
輸出格式自訂技巧
好啦,講到 Docker ps 命令,好多人都係識打個指令出嚟睇吓個容器列表就算。但係如果你真係要有效率咁管理容器,尤其係當你手上有十幾個甚至幾十個容器行緊嘅時候,識得自訂輸出格式就真係差好遠。Docker CLI 其實俾咗我哋好大嘅彈性,唔使次次都睇嗰一大堆預設嘅欄位,可以自己揀只想睇嘅資訊,甚至轉成其他格式方便第二個程式去處理。
最基本又最常用嘅技巧,就係用 --format 呢個參數。預設嘅 docker ps 會顯示 CONTAINER ID、IMAGE、COMMAND、CREATED、STATUS、PORTS、NAMES 呢啲欄位,但有時你可能只係關心個容器狀態同個名。例如你想快速檢查所有容器嘅 STATUS 同 NAMES,就可以用呢個命令:docker ps --format "table {{.Names}}\t{{.Status}}"。咁樣個輸出就會乾淨俐落好多,一眼就睇到邊個容器行緊 (Up)、邊個停咗 (Exited),管理起上嚟就快好多。呢個就係好基本嘅 格式化輸出 技巧,用 "table" 關鍵字可以保留返表格嘅樣式,睇起上嚘更整齊。
不過,--format 嘅威力遠遠唔止咁少。佢背後係用 Go 嘅 template 語法,所以你可以做到好靈活嘅組合。譬如你個團隊習慣用 CONTAINER ID 去做操作,但又想同時睇到佢對應嘅 IMAGE 同埋開咗咩 PORTS,你就可以自訂一個格式,將呢幾樣嘢擺埋一齊。又或者,你想監察容器嘅運行時間,可以加埋 {{.RunningFor}} 呢個欄位入去。呢啲自訂設定,對於每日都要做 容器管理 嘅 DevOps 工程師嚟講,可以話係必學技能,因為可以節省大量喺終端機度掃瞄同篩選資訊嘅時間。
除咗方便人眼睇,自訂格式對於自動化腳本更加係不可或缺。你可以將輸出設定為純粹嘅 JSON格式,咁樣其他程式就好容易去解析 (parse) 呢啲資料。例如用 docker ps --format '{{json .}}',佢就會將每一個容器嘅資訊以 JSON 物件嘅形式一行行咁輸出。呢個方法同直接用 docker inspect 有啲似,但就輕量同快捷好多,特別適合用嚟快速抽取某啲特定資料,再傳去監控系統或者自己寫嘅管理工具度做進一步處理。呢個就係點解深入理解 Docker ps 命令 嘅參數,可以令你嘅 容器管理 工作流程提升到另一個層次。
另外,有個小貼士係,你可以將常用嘅自訂格式設定成 alias (別名),就唔使次次打咁長串 command。例如喺你嘅 .bashrc 或者 .zshrc 檔案入面,加一句 alias dps='docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Status}}\t{{.Names}}"',咁以後打個 "dps" 就已經係你精心設計嘅檢視方式,又快又個人化。記住,有效運用 Docker CLI 嘅關鍵,就係將常用操作變得極致方便,減少出錯機會。
最後都要提一提,要精通呢啲 格式化輸出 技巧,最好嘅朋友就係官方嘅 Docker Docs。因為 Docker Engine 嘅功能同支援嘅欄位可能會隨版本更新而有少許變化,喺 2026 年嘅今日,最準確嘅參考一定係最新版嘅官方文檔。入面會詳細列出喺 --format 裡面可以用到嘅所有屬性 (fields),例如 .ID、.Names、.Image、.Command、.Ports、.Status 等等,讓你可以自由組合出最切合你當前工作需求嘅檢視畫面。掌握呢啲技巧,你對 容器 嘅掌控力就會大大增強,無論係喺 Ubuntu server 定係其他環境做嘢,都能夠得心應手。
AboutdockerProfessional illustrations
實用場景同最佳實踐
好啦,講咗咁多基本嘢,係時候深入啲,睇下點樣喺實際工作入面,將 docker ps 呢個命令玩到出神入化,同埋有啲咩最佳實踐可以跟從。記住,我哋目標唔係齋睇到個列表就算,而係要高效、精準咁管理好你班容器。
首先,最常見嘅實用場景就係快速診斷同埋日常監察。想像下你個服務突然有啲古怪,你第一時間唔係衝去睇 log(雖然 docker logs 都好重要),而係用 docker ps 睇下個容器嘅 STATUS 係咪 "Up" 緊。如果見到個狀態係 "Exited" 或者 "Restarting",咁你就知道個問題可能出喺容器生命周期嘅啟動階段,而唔係運行緊嘅應用程式邏輯。呢個時候,你可以即刻用返個 CONTAINER ID 或者 NAME 去執行進一步調查,例如 docker logs [CONTAINER ID] 去睇下佢死之前講咗啲咩遺言。另外,睇 PORTS 欄位都好關鍵,你可以確認吓你映射嘅端口(例如 8080:80)係咪真係成功顯示出嚟,避免咗「點解我 localhost:8080 打唔開嘅?」呢類低級錯誤。呢啲都係幾秒內完成嘅事,對於維運同除錯嚟講,效率提升咗好多。
跟住落嚟,一定要識玩進階過濾同格式化輸出,呢個真係將你同新手區分開嘅重點。Docker CLI 嘅 docker ps 命令提供咗強大嘅過濾參數,唔好再齋打 docker ps 然後喺成堆容器入面用肉眼搵啦。例如,你想睇下所有狀態係 "exited" 嘅容器嚟做清理,就可以用 docker ps -a --filter "status=exited"。又或者,你只想睇某個特定 IMAGE(例如 ubuntu)開出嚟嘅所有容器,就可以用 --filter "ancestor=ubuntu"。呢啲 command line interface 技巧可以幫你極速聚焦喺目標容器上。至於點樣令輸出更易讀,你可以用 --format 參數。默認嘅表格格式有時太闊,你可以自定義只顯示你需要嘅欄位,例如 docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}",咁樣個輸出就乾淨俐落好多。對於想用腳本自動化處理嘅朋友,你甚至可以輸出為 JSON 格式(--format json),然後用 jq 呢類工具去解析,整合到你嘅監控系統或者 Spacelift 呢類 CI/CD 平台入面,實現自動化嘅容器狀態檢查。
講到最佳實踐,有幾點真係要時刻記住。第一,養成習慣,善用 --filter 同自定義 NAMES。喺用 docker run -d 啟動容器嗰陣,最好習慣用 --name 標籤俾佢起個有意義嘅名,唔好等 Docker Engine 隨機生成啲古怪名。咁樣之後你用 docker ps 或者任何需要指定容器嘅操作時,都會方便好多,例如 docker ps --filter "name=web_app"。第二,定期清理。用 docker ps -a 你會見到好多已經停止咗(Exited)嘅容器,佢哋雖然唔佔用太多 CPU 同記憶體,但會佔用磁碟空間同令列表變得混亂。建立一個習慣,定期用 docker ps -a --filter "status=exited" 檢查,並清理唔需要嘅舊容器。第三,深入理解 STATUS 欄位。唔好只係識分 "Up" 同 "Exited"。 "Up" 表示運行中;"Exited" 表示已停止;"Paused" 表示被暫停;而 "Restarting" 就表示容器不斷崩潰重啟,呢個通常係大問題嘅信號,需要立即用 docker logs 跟進。呢啲都係容器管理嘅基本功。
最後,想提一提將 docker ps 融入工作流程。例如,喺執行任何有可能影響容器嘅操作之前(例如更新 Docker Engine 或者宿主機重啟),先用 docker ps 記錄低當前所有運行中容器嘅 CONTAINER ID 同 IMAGE,作為一個快照。又或者,當你團隊有多人共同開發時,可以約定用一致嘅命名規則(NAME),咁大家喺共用開發機上用 docker ps 時,一眼就知邊個容器係邊個負責,減少混亂。總而言之,docker ps 絕對唔係一個齋睇嘅命令,佢係你掌控 Docker Container 生命周期嘅情報中心。熟練運用佢嘅各種參數同埋理解輸出嘅每一個細節,你嘅容器管理能力一定會大大提升。記得,官方嘅 Docker Docs 同 GitBook 上嘅資源,都會不時更新最佳實踐,保持學習至係王道。
AboutDockerProfessional illustrations
點樣解讀容器健康狀態
好啦,而家我哋講到最關鍵嘅一步:點樣解讀容器健康狀態。當你用 Docker CLI 打 docker ps 命令嗰陣,出嚟嗰個 STATUS 欄位,就係你隻 容器 嘅健康報告卡,絕對唔可以只係睇到佢行緊就當無事。呢個狀態係由 Docker Engine 嘅 Daemon 持續監察緊,反映緊容器實際運行階段嘅情況。
首先,最基本嘅狀態就係「Up」。如果你見到「Up About an hour」,咁就表示呢個 CONTAINER ID 對應嘅容器已經順利運行咗大約一個鐘。但係,淨係得個「Up」字並唔夠,你要睇埋後面有冇跟住其他關鍵字。例如,如果係「Up (healthy)」,恭喜你,呢個容器入面運行緊嘅應用程式,其健康檢查(通常係 Dockerfile 裡面用 HEALTHCHECK 指令設定,或者係 docker run 嘅時候指定)係通過嘅,表示服務正常。相反,如果係「Up (unhealthy)」,咁就大鑊啦,即係話容器本身個進程喺度,但係內部應用嘅健康檢查失敗咗,可能個 database 連唔到,或者個 API 死咗,呢個時候你就要即刻用 docker logs 跟住個 CONTAINER ID 或者 NAME 去查下咩事,而唔係等佢自己好返。
另一種常見但令人頭痛嘅狀態係「Restarting」。呢個狀態表示個容器不斷噉崩潰又重啟,陷入咗一個死亡循環。可能係你個應用程式有 bug 一啟動就崩潰,又或者係配置出錯。你喺 docker ps 見到佢不停噉增加重啟次數,就要立即介入。你可以用 docker inspect 呢個 CLI命令 去深入睇下個容器嘅詳細狀態、退出碼同埋重啟策略,呢啲資訊對於 容器管理 同故障排查係不可或缺嘅。記住,一個長期處於「Restarting」狀態嘅容器,會浪費系統資源,影響其他容器嘅運行。
至於「Exited」狀態,就表示容器已經停止運行。後面通常會跟住一個退出碼,例如「Exited (0)」或者「Exited (137)」。退出碼 0 通常代表正常停止,可能係你手動停咗佢,或者個任務完成咗。但係非零嘅退出碼,就好似 137(通常係被 SIGKILL 信號殺死,可能係記憶體不足 OOM)、或者 1(一般性錯誤),就係問題嘅警號。你需要根據呢個碼,去 Docker Docs 或者相關社區度查詢原因,再結合 docker logs 嘅輸出嚟判斷點解個容器會死咗。呢個係 容器生命週期 管理入面好重要嘅診斷步驟。
另外,仲有「Paused」狀態。呢個唔係健康問題,而係人為用 docker pause 命令暫停咗個容器嘅所有進程。呢個時候,容器嘅運行狀態會被凍結,唔會消耗 CPU,但係會繼續佔用記憶體。當你需要做一啲維護或者調試,但又唔想完全停止個服務嘅時候,就會用到呢個功能。喺 docker ps 嘅列表入面見到「Paused」,你就知道呢個容器係被人手暫停咗,而唔係自己死咗。
要更深入、更自動化噉監控健康狀態,淨係靠 docker ps 嘅 格式化輸出 可能唔夠。你可以用 docker ps 配合一啲 命令參數 嚟獲取更清晰嘅畫面。例如,用 --filter 參數做 container filtering,只列出狀態係「unhealthy」嘅容器,方便你快速定位問題。又或者,用 --format 參數,將輸出整成 JSON格式,咁樣你就可以將呢啲狀態數據餵俾其他監控工具(好似係 Spacelift 呢類 IaC 管理平台)去做自動化告警同處理。
總而言之,解讀 docker ps 命令中嘅 STATUS 欄位,係每一位 Docker 使用者必須掌握嘅核心技能。佢唔單止話你知個容器「喺唔喺度」,更重要係揭示咗佢「健唔健康」、「點樣唔健康」。養成每次睇 容器列表 都仔細分析狀態嘅習慣,結合 docker logs、docker inspect 等 CLI命令 進行深度 容器檢查,你先可以真正做到對你嘅容器運行了如指掌,喺出現問題嘅第一時間就能夠快速反應同修復,確保你基於 Ubuntu 或者其他系統上運行嘅服務穩定可靠。記住,一個健康嘅 容器生態,就係從讀懂呢幾個簡單嘅狀態字開始嘅。
AboutContainerProfessional illustrations
常用過濾器組合示範
好啦,講咗咁多基本過濾器,係時候玩啲進階嘢,將幾個過濾器組合埋一齊用。呢個先係 Docker CLI 嘅精髓所在,可以幫你喺複雜嘅環境裏面,極速 pinpoint 到你想搵嘅 容器。單獨用一個 filter 可能仲要人手篩選,但組合拳一出,個 容器列表 即刻聽聽話話,只顯示你需要嘅資訊,對於日常 容器管理 同埋 troubleshooting 真係快靚正。
舉個最常見嘅實戰例子:假設你個 Docker Engine 行緊十幾個容器,而家你想睇下所有「已經停止咗」(Exited)嘅、但係係由某個特定 IMAGE(例如 ubuntu:latest) 創建出嚟嘅容器。呢個時候,你就要出組合技。個 命令語法 係將兩個 --filter 並排用。你可以打 docker ps -a --filter "status=exited" --filter "ancestor=ubuntu:latest"。呢句 Docker ps 命令 嘅意思好直接:首先 -a 係顯示所有容器(包括已停止嘅),然後第一個過濾器捉晒所有 容器狀態 係 exited 嘅,第二個過濾器再喺呢堆 exited 容器入面,只顯示嗰啲祖先鏡像係 ubuntu:latest 嘅。結果出嚟,你可能就會見到一兩行 CONTAINER ID 同 NAMES,咁你就可以決定係要刪除佢哋定係重新啟動,管理效率高好多。
另一個超實用嘅組合,就係用嚟檢查「最近創建」嘅容器有冇問題。譬如你剛剛用 docker run -d 命令啟動咗幾個新服務,想確認下佢哋係咪都順利行緊。你可以咁打:docker ps --filter "status=running" --filter "since=2026-04-01T00:00:00" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"。呢度我哋用咗三個 filter 再加 格式化輸出。首先限定 STATUS 必須係 running,然後用 since 指定只顯示喺 2026年4月1號 之後創建嘅容器,最後用 --format 自定義個輸出表格,只顯示 NAME、狀態同 PORTS 資訊,睇落去簡潔明瞭。如果發現有容器唔喺呢個 list 入面,但理論上又應該係最近創建兼運行緊,咁你就知道即刻要去 check docker logs 或者做 container inspection 喇。
對於成日要清理空間嘅管理員嚟講,過濾器組合亦係神器。你想一次過列出所有「已經退出咗一段時間」嘅容器,方便做批量刪除。可以咁寫:docker ps -a --filter "status=exited" --filter "exited!=0" --format "{{.ID}} {{.Names}}"。呢個組合有啲巧妙:status=exited 捉晒所有已停止容器,再加多個 exited!=0,意思係「退出代碼不等於 0」。通常退出代碼 0 代表正常停止,而非 0 就代表可能出錯退出的。呢個組合幫你快速搵出嗰啲「非正常死亡」嘅容器,跟住你可以用佢輸出嘅 CONTAINER ID 去做進一步調查或者清理。如果想再狠啲,直接搵出退出超過 24 小時嘅容器,可以結合 until:docker ps -a --filter "status=exited" --filter "until=24h"。
最後提一提,玩組合過濾器嘅時候,記住 Docker Daemon 處理佢哋嘅邏輯係「AND」,即係要同時滿足所有條件先會顯示。所以寫條件嗰陣要諗清楚邏輯。另外,官方 Docker Docs 同好多 GitBook 教程都會有最新嘅 命令示例,2026年嘅版本可能仲會多咗一兩個新嘅過濾選項都唔定,記得定期望下。將呢啲 命令參數 靈活組合,你對 容器生命週期 嘅掌控就會更加得心應手,唔使再喺成屏嘅 docker ps 輸出裏面搵到眼花花啦。
AboutDockerProfessional illustrations
點樣監控容器運行狀況
講到點樣監控容器運行狀況,Docker CLI 入面嘅 docker ps 命令 絕對係你第一時間要識用嘅基本功。呢個命令就好似你個 Docker Engine 嘅監控儀表板,一打落去,所有正在運行嘅 容器 狀態一目了然。最基本嘅用法就係喺 command line interface 直接輸入 docker ps,佢就會列出一張表,俾你睇到每個 CONTAINER ID 嘅開頭、所用嘅 IMAGE、執行緊嘅 COMMAND、創建時間、目前嘅 STATUS、以及對應嘅 PORTS 同 NAMES。呢個 容器列表 係實時嘅,對於快速掌握系統上有咩 Container 正在運行,以及佢哋係「Up」緊定係「Exited」咗,係不可或缺嘅工具。
不過,如果你淨係識用 docker ps 呢個最基本款,咁你可能只係用到佢兩成功力。想深入 監控容器運行狀況,你一定要識得用唔同嘅 命令參數 去 格式化輸出 同埋進行 container filtering。例如,好多時我哋想睇晒所有容器,包括已經停止咗嘅,咁就要加 -a 參數,即係 docker ps -a,咁先可以睇到完整嘅 container lifecycle 紀錄,方便排查點解某個容器會停咗。另外,想睇容器嘅確切創建同啟動時間,可以用 --no-trunc 參數,確保 CONTAINER ID 同 COMMAND 呢啲長資訊唔會被截斷,顯示得更完整。
對於進階嘅 容器管理,特別係當你運行緊幾十個甚至更多容器嘅時候,識得篩選同格式化輸出就更加重要。Docker ps 命令 支援用 --filter 參數做精確篩選。舉個實用例子,如果你只想睇到狀態係「running」嘅容器,可以用 docker ps --filter "status=running"。又或者,你想搵出某個特定 IMAGE(例如所有用 ubuntu 映像運行緊嘅容器),都可以用 filter 快速定位。呢種 container inspection 技巧可以極大提升你管理同監控嘅效率。
另外,想將監控資料整合到其他自動化腳本或者監控系統,JSON格式 嘅輸出就非常有用。你可以用 docker ps -a --format json 呢個 命令語法,咁樣個輸出就會變成結構化嘅 JSON 數據,方便你用其他程式(例如 Python 腳本)去解析同處理。Docker Docs 同埋 Spacelift 呢類資源平台都有詳細講解點樣自定義 --format 參數,等你可以只提取你需要嘅欄位,例如淨係列出 CONTAINER ID 同 STATUS,令到輸出更加簡潔同有針對性。
當然,單靠 docker ps 睇到嘅 容器狀態 只係一個瞬間快照。要真正深入監控運行狀況,你仲需要配合其他 CLI命令。例如,當你發現某個容器嘅 STATUS 顯示為「Up」但係服務似乎無反應,你嘅下一步好可能就係用 docker logs [CONTAINER ID] 去查看該容器嘅日誌輸出,睇下有無錯誤訊息。又或者,用 docker stats 即時監控容器嘅 CPU、記憶體使用量同網絡 I/O。呢啲命令同 docker ps 互補,提供咗一個從靜態列表到動態資源消耗嘅全面監控視圖。
最後,要提醒一下,所有呢啲 Docker CLI 操作嘅背後,都係同 Daemon 溝通。你喺命令見到嘅資訊,其實都反映緊 Docker Engine 管理緊嘅容器實時狀況。養成習慣定期使用 docker ps 及其相關參數去檢查,就等同於為你嘅容器化應用設立咗一個最基本而有效嘅健康檢查站。無論你係開發定係維運,熟練掌握呢套 容器列表 與狀態檢查方法,都係確保服務穩定運行嘅關鍵一步。記住,有效嘅監控始於清晰嘅可見性,而 docker ps 就係提供呢種可見性嘅第一道,亦係最重要嘅一道工具。
AboutCLIProfessional illustrations
同其他Docker指令配合用
好啦,講咗咁耐 docker ps 點用,其實佢最勁嘅地方係可以同其他 Docker CLI 指令完美配合,變成你管理容器生命周期嘅超級工具箱。淨係識睇 CONTAINER ID 同 STATUS 係唔夠嘅,你要識得將呢啲資訊變成行動嘅起點。例如,你行完 docker ps 見到有個容器嘅 STATUS 係 "Up",但係個應用好似有啲古怪,你下一步可以點?好簡單,立即用返顯示出嚟嘅 CONTAINER ID 或者 NAMES,配合 docker logs 指令去即時睇下個容器內部發生咩事。你可以直接打 docker logs -f [CONTAINER ID],個 -f 參數就可以讓你像睇緊直播咁,跟住個 Log 尾,對於 Debug 真係一流。呢個就係典型嘅工作流程:先用 docker ps 快速定位目標容器,然後用其他指令進行深入操作。
再舉個實用例子,假設你用 docker ps 發現有幾個用 Ubuntu IMAGE 行起嘅測試容器,狀態都係 "Exited" 好耐,嘥住啲磁碟空間。你可以點一次過清理?你可以將 docker ps 嘅過濾能力,結合 docker rm 指令。例如,你可以用 docker ps -a --filter "status=exited" --filter "ancestor=ubuntu" 呢個組合,精準列出所有已停止嘅 Ubuntu 容器,然後將個指令輸出,通過命令管道(pipe)送去 docker rm,好似 docker ps -a -q --filter "status=exited" | xargs docker rm 咁,一次過清走,管理效率即刻大增。呢度就展示咗點樣用 docker ps 做篩選,再將結果交俾其他指令做批量處理。
另一個必學嘅配合就係同 docker exec 一齊用。當你個容器係以 daemon 模式(即係 docker run -d)行緊,你要入去個容器入面執行啲命令點算?首先緊係 docker ps 確認下個容器嘅 NAME 同 STATUS 係 "Up" 啦,跟住就直接 docker exec -it [NAMES] /bin/bash,咁你就可以打開一個互動式 Shell 入到去,檢查檔案、安裝套件乜都得。如果你想睇下容器入面嘅資源使用情況,唔使離開 Docker CLI,可以用 docker stats [CONTAINER ID],實時睇住 CPU 同 Memory,對於監察性能好有用。呢啲操作都係建基於你先用 docker ps 命令搵到正確嘅容器目標。
對於進階少少嘅容器管理,例如要重新配置或者更新,docker ps 同 docker restart、docker stop 同 docker start 呢組指令就係好拍檔。你可以好有策略地,先用 docker ps 睇清邊個容器行緊乜嘢 COMMAND 同 PORTS,然後有秩序地停止(stop)同重啟(restart)相關服務。又或者,當你想深入調查容器嘅詳細設定,你會用 docker inspect [CONTAINER ID],呢個指令會輸出一大堆詳細嘅 JSON 格式資料,由網絡設定到 Volume 掛載點一清二楚。而觸發呢個深入檢查嘅第一步,往往就係由 docker ps 列表入面,複製個 ID 過去。
最後,想提下點樣將輸出格式化嘅技巧用落協作流程。Docker ps 命令本身支援用 --format 參數自訂輸出,你可以淨係抽出 CONTAINER ID 同 IMAGE 呢啲你關心嘅欄位。呢個自訂咗嘅列表,可以好方便融入你嘅自動化 Script 或者文件紀錄入面。再配合官方 Docker Docs 或者 GitBook 上嘅指引,你可以設計出一套好順暢嘅工作流程。總而言之,docker ps 絕對唔係一個孤島式嘅指令,佢係你喺 Docker Engine 世界入面嘅「雷達屏幕」。所有後續嘅容器管理動作,無論係睇 Log、入去操作、監察狀態、定係批量清理,幾乎都由佢開始。將佢同其他 Docker CLI 指令靈活搭配,你先至真正掌握到點樣高效、精準咁操控你嘅容器艦隊。
AboutCOMMANDProfessional illustrations
疑難排解同常見錯誤
好啦,講咗咁多點用 docker ps 命令,係時候要面對現實,講下疑難排解同常見錯誤。呢個係每個 DevOps 同開發者都會遇到嘅情況,唔使驚,掌握咗以下幾點,你都可以快速變身問題解決專家。
首先,最常見嘅問題就係點解我個容器明明 run 咗,但係用 docker ps 命令睇唔到? 呢個真係問到開花。好多時,特別係新手,會用 docker run -d 去後台運行個容器,但係個容器入面嘅主進程(例如個 web server)一啟動就因為配置錯誤或者端口衝突而即刻退出。因為個容器冇一個持續運行嘅進程,Docker Engine 就會當佢停止咗。你淨係用 docker ps(預設只顯示運行中嘅容器)當然咩都睇唔到啦!解決方法係加個 -a 參數,即係 docker ps -a,咁就可以睇到所有狀態嘅容器,包括 Exited 咗嘅。跟住,你一定要識用 docker logs [CONTAINER ID] 去檢查個容器停止前嘅輸出訊息,九成問題嘅答案(例如 missing environment variable、file not found)都喺入面。呢個就係容器生命周期管理嘅基本功。
另一個頭痛位係點樣準確搵到我想處理嘅容器? 當你部機有幾十個甚至幾百個容器嘅時候,個列表會長到嚇死人。齋靠對住個 CONTAINER ID 或者 NAMES 嚟搵,真係眼都花。呢個時候,就要善用 docker ps 嘅過濾功能,即係 --filter 參數。例如,你可以用 docker ps --filter "status=running" 淨係睇運行中嘅;又或者用 docker ps --filter "name=web" 去搵名入面有 "web" 字眼嘅容器。進階啲,可以根據標籤(label)或者用咗邊個 IMAGE 嚟過濾。呢啲 CLI命令 技巧對於高效容器管理係不可或缺嘅。
跟住講下輸出格式嘅問題。有時你需要將 容器列表 嘅資訊拎去第二度做自動化處理,但係預設嘅表格格式好難用程式去 parse。有冇諗過點樣令 docker ps 輸出 JSON格式?其實好簡單,用 docker ps -a --format "{{json .}}" 就可以。呢個 --format 參數好強大,你可以自定義輸出邊幾欄,例如淨係要 CONTAINER ID、STATUS 同 PORTS,方便你整合到其他監控工具或者 script 入面。記住,熟讀 Docker Docs(或者而家好多人用嘅 GitBook 整理版)入面關於 格式化輸出 嘅部分,可以幫你慳返好多手動整理資料嘅時間。
仲有一種情況係關於 Docker Daemon 嘅。如果你打 docker ps 呢個 Docker CLI命令,但係成日彈啲錯誤出嚟,話連唔到 Daemon 或者權限不足,咁點算?首先,你要確定個 Docker Engine 係咪真係有運行緊。喺 Ubuntu 上面,你可以用 systemctl status docker 嚟檢查。如果個 Daemon 冇運行,咁所有 docker ps 命令 都會失敗。權限問題通常係因為你個用戶冇加到 docker 群組入面,令到你冇權透過 CLI 去同 Docker socket 溝通。解決方法係將用戶加入群組然後重新登入。記住,所有同容器操作相關嘅命令,背後都係同 Docker Daemon 溝通,所以佢嘅狀態係最根本。
最後提一提一啲「以為係錯,但其實係特性」嘅情況。例如,你見到個 容器狀態 顯示 "Up 5 seconds",但係跟住好快又變 "Exited"。呢個未必係錯誤,可能係個容器本身就係設計嚟執行一個一次性任務(例如跑一個 database migration script),任務完成就自然退出。又或者,你見到 PORTS 欄位係空嘅,唔代表個容器冇開端口,可能係佢用咗其他網絡模式(例如 host network),又或者個端口只係監聽緊容器內部網絡。要深入了解,就一定要用 docker inspect [CONTAINER ID] 呢個命令去睇晒個容器嘅詳細配置。呢個命令會俾你一個完整嘅 JSON 輸出,裏面包含咗網絡設定、掛載點、環境變數等所有資訊,係容器檢查嘅終極武器。
總而言之,遇到 docker ps 相關嘅問題,唔好淨係望住個命令輸出發呆。要建立一個系統化嘅排解思路:1) 先用 docker ps -a 睇清所有容器狀態;2) 用 docker logs 睇應用層日誌;3) 用 docker inspect 睇底層配置;4) 善用過濾同格式化功能去整理資訊。將呢套方法融入你日常嘅 container lifecycle 管理入面,自然可以大大減少搵 bug 嘅時間,令你管理 Docker Container 更加得心應手。記住,官方 Docker Docs 同社區資源(好似 Spacelift 呢類平台嘅技術文章)永遠係你最好嘅後盾,有時間去深入睇下 命令語法 同 命令參數 嘅細節,絕對有賺。
AboutDaemonProfessional illustrations
進階輸出格式設定
講到進階輸出格式設定,Docker CLI 嘅 docker ps 命令真係唔止係睇下個 容器列表 咁簡單。好多香港嘅開發同 DevOps 朋友,可能慣咗就咁打 docker ps 睇個基本表,但其實佢內置嘅格式化功能好強大,可以幫你精準提取同監控你需要嘅 容器狀態 同資訊,對於日常 容器管理 效率提升好大。最基本嘅玩法,就係用 --format 呢個 命令參數。默認輸出有好多欄位你可能唔需要,而你想重點監控嘅資訊(例如特定 CONTAINER ID 尾幾碼、STATUS 嘅確切運行時間、或者係邊個 IMAGE)又唔夠突出。噉你就可以自己定義個表格出嚟。
例如,你只係想集中睇吓容器嘅 ID、所用嘅映像名、同埋佢哋嘅狀態,你可以用好似 docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Status}}" 噉嘅 命令語法。個 table 關鍵字會幫你保持整齊嘅欄位對齊,睇起上嚟就舒服好多啦。呢個對於管理緊幾十個 Container 嘅時候尤其有用,你可以一眼掃晒關鍵資料,唔使喺一大堆 PORTS 同 COMMAND 資訊裡面搵餐懵。Docker Docs 同埋好多 GitBook 上面嘅進階指南都有講,呢個格式化功能係用 Go 嘅 template 語法,所以佢好靈活。
除咗 table 模式,你仲可以直接輸出純粹嘅值,方便用喺 Shell Script 或者同其他 CLI 工具配合做自動化。譬如話,你想攞晒所有運行緊嘅容器 ID 去做後續操作,可以用 docker ps -q --format "{{.ID}}"。呢個 -q 旗標本身已經係只輸出 ID,但結合 --format 你就可以有更細緻嘅控制,例如輸出 ID 加狀態,方便你寫腳本去檢查。呢啲都係 Docker Engine 俾你嘅底層操控能力。
再進階少少,個 --format 仲支援條件判斷同範圍操作,雖然語法有少少複雜,但用熟咗真係神器。舉個 命令示例,假設你想監控所有狀態係 Exited 而且退出碼唔係 0 嘅容器,然後用特定格式列出佢哋嘅 NAMES 同退出碼,你可以設計一個更複雜嘅格式字串。雖然日常未必每日用,但當你要做故障排查或者構建監控儀表板時,呢種直接由 Docker Daemon 度拎結構化數據嘅方式,就比用 docker ps 完再人手 grep awk 嚟得直接同可靠。
另外,想提一提 JSON 格式 輸出。對於要將 容器列表 資料交俾其他程式處理(例如用 Python 腳本分析,或者同 Spacelift 噉嘅 CI/CD 平台整合),--format 仲可以輸出成標準 JSON。你用 docker ps --format '{{json .}}',佢就會將每一行容器資料變成一個 JSON 物件,裡面包含晒所有你見過嘅欄位,例如 CONTAINER ID、IMAGE、COMMAND、STATUS、PORTS、NAME 等等。呢個方法比起解析文字表格穩定得多,因為結構清晰,唔會因為某個 容器 嘅 COMMAND 太長而有格式錯亂。你可以好容易噉用 jq 呢類工具去 filtering 同處理。
最後,點樣知道有咩欄位可以用呢?最穩陣係查官方文檔,或者用 docker ps --format='{{json .}}' 睇下一個完整容器記錄嘅 JSON 鍵名係咩。亦可以試下 docker inspect 命令,佢嘅輸出結構同呢度用到嘅欄位名好有關聯。將 docker ps 嘅格式化輸出,同 docker logs、docker inspect 呢啲 容器檢查 命令結合,你就能夠掌握一個 容器 由 docker run -d 啟動之後,整個 container lifecycle 嘅完整視圖。總括嚟講,花少少時間學識 docker ps 嘅 進階輸出格式設定,絕對係提升你 容器管理 功力嘅一個實用技巧,令你唔使再喺終端機面前左睇右睇,直接拎到最核心嘅資訊。
AboutDockerProfessional illustrations
自動化腳本點樣整合
講到自動化腳本點樣整合 Docker ps 命令,其實係 DevOps 日常入面嘅核心技巧。好多香港嘅開發同維運團隊,而家都係靠寫 Script 去自動化啲重複性工作,例如監察容器狀態、定期出報告、或者觸發一啲後續操作。Docker CLI 本身嘅設計就係為咗方便整合落去 Shell Script、Python 或者任何你鍾意嘅自動化工具入面。最直接嘅做法,就係將 docker ps 命令嘅輸出,當成係一段數據咁去處理。
例如,你想喺個自動化腳本入面,定時檢查有邊啲 容器 係運行緊(STATUS 顯示為 Up),你可以用 docker ps --filter "status=running" 呢個命令。呢個命令會幫你過濾出所有運行中嘅容器,唔使你再用人眼去 容器列表 入面逐個搵。呢個 容器過濾 功能好實用,你可以根據 CONTAINER ID、NAME、甚至係 IMAGE 嘅名嚟做篩選。將呢段命令放入去一個 Bash 腳本,再加個定時任務(Cron Job),咁就已經係一個最簡單嘅自動化監察腳本喇。
但係,如果個自動化系統需要進一步處理啲資料,例如將 容器狀態 匯出做一個 JSON 檔案,俾第二個系統讀取,咁點算呢?Docker CLI 早就諗到呢點,佢提供 --format 參數,可以將 docker ps 嘅輸出格式化。默認嘅輸出係俾人睇嘅表格,但係用 --format 你可以指定輸出做 JSON 格式,咁樣其他程式就好容易用程式庫去解析(Parse)。例如,docker ps --format "{{json .}}" 就會將所有容器資訊以 JSON 形式逐行輸出,你可以用 jq 呢類工具去抽取特定欄位,好似係 NAMES、PORTS、同埋 COMMAND 等等。呢種 格式化輸出 方式,對於要整合落去 CI/CD Pipeline(例如 Spacelift)或者監控儀表板,係非常重要嘅一步。
進階啲嘅整合,仲會涉及 容器生命週期 管理。例如,你個自動化腳本可能要做嘅嘢係:先運行 docker ps -a 列出所有容器(包括已停止嘅),然後檢查某個特定 容器 嘅狀態,如果佢已經退出(Exited),就自動運行 docker logs 去攞取最後嘅錯誤日誌,跟住再決定係重新啟動佢定係通知管理員。呢個流程就需要將多個 Docker 命令 串連起嚟,docker ps 就負責提供最初嘅 容器列表 同狀態資訊。呢度要留意返,docker ps 默認只係顯示運行中嘅容器,要睇埋已停止嘅,就一定要加 -a 呢個 命令參數。
另外,喺一啲資源管理嘅自動化腳本入面,你可能需要知道每個容器用緊幾多資源。雖然 docker ps 本身唔顯示 CPU 同記憶體用量,但你可以結合 docker stats 命令,或者用 docker inspect 命令去獲取更詳細嘅 容器檢查 資訊。好多有經驗嘅工程師,會先利用 docker ps 攞到所有運行中容器嘅 CONTAINER ID,然後用個 Loop 去逐個執行 docker inspect,再提取需要嘅數據。呢種做法雖然要行多個命令,但彈性極高,可以完全根據你公司嘅需要去訂製監控內容。
對於用開 Ubuntu 伺服器嘅團隊嚟講,將呢啲自動化腳本放喺邊度執行都係一個考慮點。你可以直接喺裝有 Docker Engine 嘅主機上運行,但更好嘅做法係透過一個中央管理節點,利用 Docker CLI 遠程連接去唔同主機嘅 Daemon 執行命令。咁樣可以統一管理分散喺唔同地方嘅容器。無論你用邊種方法,記得要妥善處理好認證同網絡安全問題。
最後不得不提,官方嘅 Docker Docs 同埋好多優質嘅 GitBook 技術文檔,都係你學習自動化整合嘅寶庫。入面有齊晒所有 命令語法 同大量 命令示例,尤其係關於點樣靈活運用 --filter 同 --format 呢兩個強大參數。將 docker ps 整合入自動化腳本,唔單止可以提升工作效率,減少人手操作出錯,更能為你建立一個更可靠、更易於維護嘅 容器管理 體系。記住,自動化嘅目的係將人從重複勞動中釋放出來,去處理更有價值嘅問題,而 Docker CLI 就係達成呢個目標嘅一把利器。
AboutGitBookProfessional illustrations
效能監控同資源檢視
講到用 Docker ps 命令做效能監控同資源檢視,其實呢個係 Docker CLI 入面一個好基本但又好強大嘅功能。好多香港嘅開發同 DevOps 朋友,可能淨係識用 docker ps 嚟睇吓有咩容器行緊,睇吓個 STATUS 係 Up 定係 Exited 就算。但其實,只要你識得用啲參數同埋識得解讀佢輸出嘅資訊,docker ps 可以俾你睇到好多關於容器資源消耗同健康狀況嘅線索,對於日常嘅容器管理同埋故障排查嚟講,真係幫到手。
首先,最基本嘅 docker ps 命令,會列出正在運行嘅容器,顯示啲好似 CONTAINER ID、IMAGE、COMMAND、CREATED、STATUS、PORTS、NAMES 呢啲欄位。但如果你想做深入少少嘅效能監控,淨係睇呢啲係唔夠嘅。例如,你點樣知道某個容器食緊幾多 CPU 同記憶體?呢個時候,你就需要用到 docker stats 呢個命令,佢可以即時顯示每個容器嘅資源使用情況,包括 CPU 百分比、記憶體使用量同上限、網絡 I/O 同塊設備 I/O。你可以將 docker stats 理解為 docker ps 嘅一個強化版,專注喺資源檢視。不過,docker ps 本身都可以透過一啲格式化輸出嘅技巧,嚟提取一啲同資源相關嘅 metadata,或者配合其他命令一齊用。
點樣用 docker ps 嚟輔助效能監控呢?一個好實際嘅用法係結合過濾功能。假設你個系統行緊幾十個容器,但係你發現部伺服器嘅 CPU 無喇喇飆高,你想快速搵出邊個容器最有嫌疑。你可以用 docker ps 配合 --filter 參數,例如根據狀態或者標籤去收窄範圍,先鎖定一組可疑嘅容器。跟住,你再對呢組容器用 docker stats 或者更深入嘅 docker inspect 命令去檢查。Docker inspect 可以輸出容器嘅詳細配置同狀態資訊,而且係用 JSON 格式,好適合拎去俾其他監控工具做分析。呢個就係一個好典型嘅容器檢視同問題排查流程。
另外,講到資源檢視,唔可以唔提點樣解讀容器嘅狀態。docker ps 嘅 STATUS 欄位唔止話你知個容器係行緊定停咗。佢可能會顯示 "Up 2 days" 咁,表示個容器已經穩定運行咗兩日;又或者顯示 "Restarting (1) 5 seconds ago",咁就大鑊啦,表示個容器可能出咗問題,不斷喺度重新啟動,呢個狀態好可能伴隨住高嘅資源消耗或者應用程式錯誤。仲有,如果你見到個 STATUS 係 "Paused",咁就要留意,因為暫停咗嘅容器雖然唔會用 CPU,但係佢佔用住嘅記憶體係唔會釋放出嚟嘅。所以,定期睇吓 docker ps 嘅輸出,留意有冇異常狀態,都係效能監控嘅一環。
對於進階嘅資源監控,我哋亦可以自定義 docker ps 嘅輸出格式。用 --format 參數,你可以指定只輸出某啲欄位,甚至用 Go 模板嚟構造你需要嘅資訊。例如,你可以整一個只顯示 CONTAINER ID、NAME、同埋對應鏡像 IMAGE 嘅簡潔列表,方便你快速做資產管理。又或者,你可以將輸出格式化為 JSON,然後用 jq 呢類工具去提取特定資訊,再傳去你公司嘅監控系統度。呢種方法對於自動化嘅容器生命周期管理同監控嚟講,非常之有用。
當然,單靠 Docker CLI 嘅命令做監控,對於生產環境嚟講可能唔夠全面。所以,好多團隊會用額外嘅工具,好似係 Spacelift 呢類專注於容器化工作流程嘅平台,又或者係 Prometheus 配上 cAdvisor 呢類專門監控容器嘅方案。呢啲工具可以收集更細緻嘅指標,設定警報,同埋提供歷史數據分析。不過,無論你用咩高級工具,docker ps 同埋相關嘅 Docker CLI 命令,永遠都係你第一手、最直接去同 Docker Engine 同 Daemon 溝通,即時檢視容器狀態同資源使用情況嘅基本功。熟練掌握佢哋,無論係喺自己部 Ubuntu 開發機度 debug,定係喺伺服器上快速應對故障,都係不可或缺嘅技能。
最後都要提一提,要有效監控,就要由容器啟動嗰刻開始規劃。例如,用 docker run -d 啟動容器時,可以適當設定資源限制,例如 --memory 同 --cpus,咁樣 Docker Engine 就會幫你管理好資源分配,唔會俾某一個容器食晒成部機嘅資源。之後,當你用 docker ps 同 docker stats 檢視時,你嘅監控就會更有意義,因為你會知道個容器係咪已經用到接近你設定嘅上限,從而判斷需唔需要調整配置。記住,定期查閱 Docker Docs 或者相關嘅 GitBook 資源,了解最新版本嘅命令參數同最佳實踐,至可以確保你嘅容器管理方法係跟得上時代。
AboutNAMEProfessional illustrations
實戰範例逐步跟住做
好啦,各位想學識點用 Docker ps 命令嘅朋友,而家就同大家一齊做個實戰範例,逐步跟住做,包保你由新手變到可以靈活管理你嘅容器。我哋假設你已經裝好咗 Docker Engine,個 Daemon 已經行緊,咁就可以打開你嘅 Terminal (CLI) 開始喇。
首先,我哋要做嘅就係啟動幾個容器做實驗材料。你可以用 docker run -d 呢個命令,加埋唔同嘅 IMAGE 去開幾個背景運行嘅容器。例如,你可以試下開兩個唔同嘅 Ubuntu 容器,再加一個 Nginx 容器。命令大概係咁:docker run -d ubuntu sleep 300 同埋 docker run -d nginx。咁做嘅目的,就係等我哋個容器列表唔好空空如也,有啲實例可以俾我哋睇到唔同嘅 STATUS,例如 Up 幾耐、Exited 又係點樣。記住,docker run -d 呢個參數好重要,佢代表 detached mode,即係個容器會喺背景行,唔會 block 住你個 command line interface。
開完幾個容器之後,我哋就進入正題,試下最基本嘅 docker ps 命令。你直接喺 CLI 打 docker ps 然後 Enter,Docker CLI 就會俾你睇到一個表格。呢個表格就係你嘅容器列表,佢會顯示所有正在運行(STATUS 係 Up)嘅容器。你會睇到幾欄重要資訊:第一欄係個容器嘅完整 CONTAINER ID(通常頭12個字),跟住係佢用緊邊個 IMAGE 嚟建立,例如 ubuntu 或者 nginx;然後會睇到佢創建之後執行緊嘅 COMMAND,例如 "sleep 300" 或者 "nginx -g 'daemon off;'";再睇佢創建咗幾耐、而家個容器狀態係點(STATUS 會顯示 "Up About a minute" 之類)、佢有無將內部嘅 PORT 映射出去主機(PORTS 欄),最後就係系統自動生成或者你自己指定嘅 NAME(NAMES 欄)。呢個就係最核心嘅容器管理視窗,所有基本資訊一覽無遺。
但係,淨係睇運行中嘅容器邊夠喉呀?實戰環境下,我哋經常要檢查埋啲已經停止咗嘅容器。咁就要用 docker ps -a 呢個命令。加個 -a 參數(即係 --all 嘅縮寫),Docker 就會將所有狀態嘅容器,無論係 Up、Exited 定係 Created,全部列出嚟俾你睇。呢個時候,你可以觀察到容器嘅完整生命週期(container lifecycle),對於排查問題好有用。例如,你會發現某個 Ubuntu 容器嘅 STATUS 變咗 "Exited (0) 2 minutes ago",咁你就知道佢已經完成任務或者被人停止咗。
睇得耐,你可能會覺得個預設表格太闊,或者想集中睇某啲特定資訊。呢個時候就要學識點樣格式化輸出。Docker ps 命令有個好強大嘅參數叫 --format。你可以用佢嚟自定義顯示邊幾欄資訊。舉個例,如果你只係關心個 CONTAINER ID、IMAGE 同埋 STATUS,你可以打 docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Status}}"。咁樣個輸出就會簡潔好多,尤其係用嚟做腳本處理嘅時候好方便。你甚至可以叫佢用 JSON格式 輸出,方便其他程式讀取,命令係 docker ps --format json。
另外,當你嘅容器愈開愈多,點樣快速搵到目標容器都好緊要。呢個就要用到容器篩選(container filtering)功能。Docker ps 命令支援用 --filter 參數去縮窄範圍。例如,你想睇晒所有用 ubuntu 呢個 IMAGE 開出嚟嘅容器,無論佢行緊定停咗,可以打 docker ps -a --filter "ancestor=ubuntu"。又或者,你想只列出狀態係 "exited" 嘅容器,就用 docker ps -a --filter "status=exited"。呢個功能對於管理大量容器嘅環境係不可或缺嘅,可以話係進階容器管理嘅基本功。
最後,等我哋整合運用一下。假設你想做一個詳細嘅容器檢查(container inspection),你可以先用 docker ps -a --filter "name=my_nginx" 搵出個名叫 my_nginx 嘅容器,記低佢個短 CONTAINER ID。然後,你可以用 docker logs 命令跟住個 ID 去睇下個容器嘅日誌輸出,了解佢內部發生過咩事。呢個工作流程——先 ps 搵目標,再 logs 睇詳情——就係日常用 Docker CLI 做維運嘅標準動作。記住,所有呢啲命令語法同命令參數,你都可以去官方 Docker Docs 度查到最 update 嘅解釋,唔好死記,最緊要係理解個邏輯。
總而言之,docker ps 命令絕對唔係淨係打兩個字母咁簡單。由最基本嘅列表,到用 -a 睇全部,再到用 --format 自定義格式、用 --filter 精準篩選,每一步都係提升你容器管理效率嘅關鍵。大家跟住上面嘅實戰範例自己動手試多幾次,自然就會熟練,以後望住個 CLI 畫面就知道點樣迅速掌握你所有 Docker Container 嘅動態。