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コマンドは、コンテナが多くなったときに目的の条件で素早くフィルタリングし、管理できるため非常に実用的で強力です。積極的に活用してみてください!
コメントはありません。