Docker でコンテナーを完全に削除する

Marion Paul Kenneth Mendoza 2023年6月20日
Docker でコンテナーを完全に削除する

通常、Docker は停止したコンテナーを削除せず、タグを外すだけです。 このプロセスは、停止したコンテナーが誤って削除されるのを防ぐために行われます。

この記事では、未使用のタグなしコンテナーを適切に削除して、Docker のリソースを再利用する方法について説明します。

Docker でコンテナーを完全に削除する

Docker には、特定のイメージを強制的に削除する remove コマンドがあります。 このコマンドは、イメージの場合は docker rmi -f <image_id> で、コンテナーの場合は docker rm <container_id> です。

ただし、紙の上では、このコマンドはコンテナー イメージを削除せず、オブジェクトのタグを解除することによってソフト削除するだけです。

コマンドdocker image ls -aを使用して停止したイメージを確認すると、上記のコマンドがイメージを削除するのではなく、タグを解除するだけであることを確認できます。

出力例:

Untagged: my_image:latest

次のセクションでは、docker コンテナーを完全に削除するのに役立つ複数のスクリプトとパラメーターについて説明します。

Docker でのコンテナのプルーニング

Docker を使用していると、未使用のオブジェクトが大量に蓄積され、大量のディスク領域が消費され、Docker コマンドによって生成される出力が乱雑になります。 残念ながら、Docker は、明示的に指示されない限り、コンテナー、イメージ、ボリューム、ネットワークなどのタグが付けられていない未使用のオブジェクトを削除しません。

停止状態のコンテナーを削除することで、コンテナーのプルーニングでリソースを迅速に回収できます。 たとえば、以下のコマンドを使用できます。

コード例:

docker system prune -a

-a フラグは、未使用のイメージをすべて削除します。 実行後、次のメッセージが表示されます。

-f 強制フラグを指定して上記のコマンドを追加することで、このメッセージを回避できます。

WARNING! This command will remove the following:
        - all containers with the stopped status
        - all network paths not used by at least one (1) container
        - all images without at least one (1) container associated with them
        - all cache
Are you sure you want to continue? [y/N]

さらに、上記のコマンドは、以前の未使用の Docker コンテナーにアタッチされた未使用のボリュームを削除しません。 ただし、--volumes パラメータを追加して使用することで、未使用のボリュームの削除を含めることができます。

Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

関連記事 - Docker Container

関連記事 - Docker Image