CodeGym /Adesua ahorow /Docker SELF /檢查容器狀態

檢查容器狀態

Docker SELF
等級 11 , 課堂 2
開放

3.1 使用 docker ps 指令的基礎

docker ps 指令在 Docker 的工具集裡是最有用的之一。它會顯示正在運行的容器清單,並提供相關的信息。在這節課程中,我們會詳細說明如何使用 docker ps 來檢查你容器的狀態,並了解有哪些參數可以用來更細緻化地輸出信息。

預設情況下,指令 docker ps 只顯示當前正在運行的容器清單。

語法

Terminal

docker ps [OPTIONS]

其中:

  • OPTIONS: 用於過濾和格式化輸出的額外選項。

基本使用範例

Terminal


docker ps 

這個基本的 docker ps 指令會顯示所有正在運行的容器清單。輸出內容會包括以下欄位:

  • CONTAINER ID: 容器的唯一識別碼。
  • IMAGE: 創建容器所用的映像。
  • COMMAND: 容器內正在執行的指令。
  • CREATED: 自容器創建以來的時間。
  • STATUS: 容器的當前狀態 (例如 Up 5 minutes)。
  • PORTS: 被映射的端口。
  • NAMES: 容器的名稱。

列出所有容器

若要顯示所有容器,包括已停止的容器,請使用 選項 -a:

Terminal


docker ps -a 

此指令會顯示曾經運行過的所有容器清單,並標示它們的當前狀態 (運行中、停止等)。

3.2 輸出過濾

Docker 提供了一個功能,可過濾 docker ps 命令的輸出,僅顯示符合指定條件的容器。

1. 按狀態過濾

例如,要顯示僅停止的容器:

Terminal


docker ps -f "status=exited" 

2. 按名稱過濾

要顯示具有特定名稱或其部分名稱的容器:

Terminal


docker ps -f "name=my_container"

3. 按映像過濾

要顯示由特定映像創建的容器:

Terminal

docker ps -f "ancestor=nginx"

3.3 格式化輸出

你可以配置 docker ps 命令的輸出,讓它更易讀或者只包含你需要的欄位。為此可以使用參數 --format

格式化範例

Terminal


docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}"

這個範例輸出一個包含容器 ID、名稱和狀態的表格。

表格中可用的欄位

  • {{.ID}}: 容器的 ID。
  • {{.Image}}: 容器的映像。
  • {{.Command}}: 在容器中執行的命令。
  • {{.CreatedAt}}: 容器的創建時間。
  • {{.RunningFor}}: 容器的運行時間。
  • {{.Status}}: 容器的當前狀態。
  • {{.Ports}}: 映射的端口。
  • {{.Names}}: 容器的名稱。

使用範例

範例 1: 只顯示容器的 ID

此範例只會輸出正在運行的容器 ID。對於在腳本中使用很有幫助。

Terminal


docker ps -q

範例 2: 顯示最近 24 小時內啟動的容器

Terminal


docker ps --filter "since=24h" 

範例 3: 顯示特定狀態的容器並格式化輸出

此範例會輸出一個表格,包含所有正在運行容器的名稱、狀態和映射的端口。

Terminal


docker ps -f "status=running" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" 

3.4 實際應用場景

1. 監控正在運行的容器

當你有多個容器在運行時,使用 docker ps 指令可以快速檢查它們的當前狀態,確保一切都運行順利。

Terminal


docker ps 

2. 查找並刪除已停止的容器

容器執行結束後,它們會一直保留在系統中,直到你刪除它們為止。你可以使用 docker ps -a 查找所有已停止的容器,然後刪除它們。

Terminal

docker ps -a -f "status=exited" 
docker rm $(docker ps -a -f "status=exited" -q)
    

3. 任務自動化

在腳本中使用 docker ps 命令能夠幫助你自動化各種容器管理任務。例如,你可以生成容器狀態報告,或者在容器停止時自動重啟它們。

Terminal

if [ $(docker ps -q -f "name=my_container") ]; then
  echo "Container is running"
else
  docker start my_container
fi
    

重要! 這個“代碼”是用 Linux 終端執行的。你可能需要學習一下。

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION