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 specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn関連記事 - Docker Container
- Docker コンテナが実行されているかどうかを確認する
- Docker コンテナを再起動する
- Docker コンテナ内から Docker ホストの IP アドレスを取得する
- Docker で停止しているコンテナーのみを一覧表示する
- Docker を使用してバックグラウンドでコンテナーを継続的に実行する