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日前          Up 2日       my-web-container

3. 使用されているイメージ(image)でフィルタリング

特定のイメージを使用しているコンテナを簡単に見つけるときに使用します。

例: nginxイメージを使用しているコンテナを表示

docker ps -a --filter ancestor=nginx
  • 結果例:
CONTAINER ID   IMAGE          COMMAND          STATUS        NAMES
a1b2c3d4e5     nginx:latest   "/start"         Up 3時間      nginx-server-1
f6g7h8i9j0     nginx:alpine   "/start"         終了        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日       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日       myapp-production

6. ネットワーク(network)でフィルタリング

特定のネットワークに接続されているコンテナのリストを確認する際に便利です。

例: 特定のネットワークに接続されているコンテナを表示

docker ps -a --filter network=my_network

  • 結果例:
CONTAINER ID   IMAGE          COMMAND          STATUS         NAMES 
123abc456de    redis          "/start"         Up 1日       redis-cache 
456def789gh    postgres       "/start"         Up 1日       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コマンドは、コンテナが多くなったときに目的の条件で素早くフィルタリングし、管理できるため非常に実用的で強力です。積極的に活用してみてください!