複数の --filter
フラグを使用して複数の条件でイベントをフィルタリングする
このステップでは、複数の --filter
フラグを組み合わせて、複数の条件に基づいて Docker イベントを同時にフィルタリングする方法を学びます。これにより、より具体的なフィルタを作成して、自分が関心のあるイベントを正確に見つけることができます。
複数の --filter
フラグを使用すると、Docker は「AND」論理を適用します。つまり、イベントは指定されたすべてのフィルタに一致しなければ、出力に含まれません。
オブジェクトの種類とアクションによるフィルタリングを組み合わせてみましょう。コンテナの start
イベントをフィルタリングします。
まず、start
イベントを生成するためにコンテナを実行します。
docker run hello-world
次に、2 つの --filter
フラグを使用します。1 つはオブジェクトの種類用 (type=container
)、もう 1 つはアクション用 (event=start
) です。また、時間範囲を制限するために --since 5m
も使用します。
docker events --filter type=container --filter event=start --since 5m
hello-world
コンテナの start
イベントが過去 5 分以内に発生した場合、そのイベントのみが表示されるはずです。create
や die
などのイベントは、event=start
フィルタに一致しないため除外されます。
時間、種類、アクションによるフィルタリングを組み合わせることもできます。たとえば、過去 10 分間に発生したが、過去 2 分間には発生していないコンテナの die
イベントをフィルタリングしてみましょう。
docker events --filter type=container --filter event=die --since 10m --until 2m
このコマンドは、指定された時間範囲内に該当するコンテナの die
イベントを表示します。
コンテナ名やイメージ名でのフィルタリングなど、さらに多くのフィルタを追加することもできます。ubuntu
イメージを使用する my-specific-container
という名前のコンテナの start
イベントをフィルタリングしてみましょう。
まず、ubuntu
イメージをプルします。
docker pull ubuntu
次に、特定の名前で ubuntu
コンテナを実行します。
docker run --name my-specific-container ubuntu echo "Hello from Ubuntu"
次に、my-specific-container
という名前のコンテナの start
イベントをフィルタリングします。
docker events --filter type=container --filter event=start --filter container=my-specific-container --since 5m
my-specific-container
の start
イベントが過去 5 分以内に発生した場合、そのイベントが表示されるはずです。