docker ps -a --filter 命令在 Docker 容器列表中根據特定條件過濾時非常有用。這是一個強大的功能,可以在容器眾多的環境中快速找到所需的容器。

下面我將與實際案例一起介紹主要的過濾選項。


基本格式



docker ps -a --filter <過濾名稱>=<過濾值>

可以同時使用多個過濾器,在這種情況下需要使用多個 --filter 選項。


🔍 主要過濾選項及應用案例

1. 根據狀態(status)過濾

用於根據容器狀態過濾。

狀態選項 描述
created 已創建但尚未啟動的容器
restarting 不斷重啟的容器
running 當前運行中的容器
paused 暫停的容器
exited 已退出的容器

範例:查看僅運行中的容器

docker ps -a --filter status=running

範例:查看僅已退出的容器

docker ps -a --filter status=exited

2. 根據容器名稱(name)過濾

用於查找包含特定名稱的容器。

範例:僅查看名稱中包含「web」的容器

docker ps -a --filter name=web
  • 結果範例:
CONTAINER ID   IMAGE           COMMAND     CREATED         STATUS         NAMES 
f1c2d3e4f5     nginx:latest    "/start"    2 days ago      Up 2 days      my-web-container

3. 根據使用的映像(image)過濾

用於輕鬆查找使用特定映像的容器。

範例:查看使用 nginx 映像的容器

docker ps -a --filter ancestor=nginx
  • 結果範例:
CONTAINER ID   IMAGE          COMMAND          STATUS        NAMES
a1b2c3d4e5     nginx:latest   "/start"         Up 3 hours    nginx-server-1
f6g7h8i9j0     nginx:alpine   "/start"         Exited        nginx-temp

4. 根據卷(volume)過濾

用於查找掛載特定卷的容器。

範例:查看使用 my_volume 卷的容器

docker ps -a --filter volume=my_volume
  • 結果範例:
CONTAINER ID   IMAGE          COMMAND           STATUS         NAMES
1a2b3c4d5e     postgres       "docker-entry"    Up 2 days      postgres_db

5. 根據標籤(label)過濾

在 Docker Compose 或 Kubernetes 等環境中標記容器以進行管理時非常有用。

範例:查看標籤為「env=production」的容器

docker ps -a --filter label=env=production

  • 結果範例:
CONTAINER ID   IMAGE           COMMAND         STATUS          NAMES 
abcdef12345    myapp:latest    "/run-app"      Up 3 days       myapp-production

6. 根據網路(network)過濾

用於檢查連接到特定網路的容器列表。

範例:查看連接到特定網路的容器

docker ps -a --filter network=my_network

  • 結果範例:
CONTAINER ID   IMAGE          COMMAND          STATUS         NAMES 
123abc456de    redis          "/start"         Up 1 day       redis-cache 
456def789gh    postgres       "/start"         Up 1 day       postgres-db

7. 根據 ID 過濾

用於快速搜索特定容器 ID。 (通常只需輸入 ID 的前幾位即可。)

範例:查看 ID 開頭為 1234 的容器

docker ps -a --filter id=1234

💡 使用多個過濾器組合



可以組合多個過濾器。

範例:「web」包含在名稱中,狀態為「running」,並且使用「nginx」映像的容器

docker ps -a --filter name=web --filter status=running --filter ancestor=nginx

🛠️ 實用案例

  • 當需要停止特定項目的所有容器時:
docker stop $(docker ps -a -q --filter name=my_project)****
  • 刪除舊的已退出容器:
docker rm $(docker ps -a -q --filter status=exited)
  • 清理不必要的臨時容器:
docker rm $(docker ps -a -q --filter ancestor=temp_image)

因此,docker ps -a --filter 命令在容器增多時能讓您根據特定條件快速過濾和管理,實用且強大。請積極加以利用!