フィルタを使用して Docker データを削除する
すべての未使用データを削除するだけでなく、docker system prune
を使うとフィルタを使用して Docker オブジェクトを選択的に削除することができます。これにより、削除対象をより細かく制御することができます。
フィルタはさまざまな種類のオブジェクトに適用できます。docker system prune
では、オブジェクトの作成時間などの条件に基づいてフィルタを適用できます。
フィルタリングを実演するために、いくつかの Docker オブジェクトを作成しましょう。いくつかのコンテナを実行してから停止させます。
最初のコンテナを実行します。
docker run -d --name oldcontainer ubuntu sleep 10
このコンテナは 10 秒間実行された後に終了します。
2 番目のコンテナを実行します。
docker run -d --name newcontainer ubuntu sleep 20
このコンテナは 20 秒間実行された後に終了します。
両方のコンテナが終了するのを待ちます。docker ps -a
でそれらの状態を確認できます。
docker ps -a
oldcontainer
と newcontainer
の両方が「Exited」状態で表示されるはずです。
ここで、特定の時間より古いオブジェクトのみを削除するためにフィルタを使用しましょう。until
フィルタに時間を指定して使用できます。たとえば、5 秒より古いオブジェクトを削除するには、until=5s
を使用します。
15 秒より古いオブジェクトを削除してみましょう。これにより、oldcontainer
が削除され、newcontainer
は残るはずです(oldcontainer
が終了し、newcontainer
がまだ終了していないのを十分に待ったと仮定します)。
docker system prune -f --filter "until=15s"
出力を確認します。oldcontainer
が削除されたことが表示され、newcontainer
は残っているはずです。
コンテナを確認します。
docker ps -a
newcontainer
が一覧に表示され、oldcontainer
は削除されているはずです。
次に、再度削除操作を行います。今度は 30 秒より古いオブジェクトを削除します。これにより、newcontainer
も削除されるはずです。
docker system prune -f --filter "until=30s"
出力を確認します。newcontainer
が削除されたことが表示されるはずです。
再度コンテナを確認します。
docker ps -a
コンテナが一覧に表示されないはずです。
フィルタは削除プロセスをカスタマイズする強力な手段です。削除対象のオブジェクトの種類(コンテナ、イメージ、ボリューム、ネットワーク)に応じて、異なるフィルタキーを使用できます。until
フィルタは、特定の期間使用されていないオブジェクトをクリーンアップするためによく使用されます。