今回は、不要なDokerコンテナおよびDockerイメージを削除するコマンドをまとめます。
あくまでコマンド(おまじない)を書いているだけで、裏側のロジックとか難しいことは書いていないのでご了承下さい。
※とにかく削除のコマンドだけ知りたい方は、以下のContentsから3の「おわりに」へ飛んで下さい。
不要なDockerコンテナを削除するコマンドまとめ
まずはコンテナからです。
個別のコンテナを削除する場合と、全てのコンテナを一気に削除する場合とで分けて紹介します。
個別のDockerコンテナを削除するコマンド
まずは立ち上げているコンテナを確認しましょう。docker ps
で動いているコンテナ(STATUS:Up)を、docker ps -a
で動いているコンテナと停止しているコンテナ(STATUS:Exited)を確認できます。
※docker-composeを使ってコンテナを立ち上げた場合、docker-compose ps
でもコンテナを確認できます(-aは必要ありません)。ただ、docker-compose.ymlファイルを置いてあるディレクトリまたは、docker-compose.ymlファイルを置いてあるディレクトリの子ディレクトリ以外では、このコマンドを打ってもエラーが出るので注意しましょう。
動いているコンテナは基本的には削除できないので、まずはコンテナを止めましょう。docker-composeでコンテナを立ち上げた場合は、docker-compose stop
で全てのコンテナを停止させることができます。
個別でコンテナを停止させたい場合は、docker stop [CONTAINER ID]
でコンテナを停止させましょう。今回は、二つあるコンテナの内の片方を停止させます。
片方のコンテナを停止(Exited)させることができました。
次に、この停止したコンテナを削除しましょう。個別のコンテナを削除するには、以下のコマンドを使います。
docker rm [CONTAINER ID]
※実際に書くときは、[]は必要ありません
実際に上記のコマンドを使ってみましょう。[CONTAINER ID]には、止まっているコンテナのIDを指定します。
削除できているか確認しましょう。
特定のコンテナを削除することができました。
「動いているコンテナは基本的には削除できない」と書きましたが、実は動いているコンテナも強制削除することは可能です。以下のコマンドを使います。
docker rm -f [CONTAINER ID]
全てのDockerコンテナを一括削除するコマンド
次に、一括で全てのDockerコンテナを削除するコマンドを紹介します。
この二つのコンテナを一括で削除してみましょう。
まずは二つのコンテナを止めます。(止めないと今回紹介するコマンドを打っても削除できません)
二つのコンテナを停止させることができました。
この状態で、以下のコマンドを打ってください。これで二つのコンテナを一括で消すことができます。
docker rm $(docker ps -a -q)
コンテナが消えているか確認してみましょう。
全てのコンテナが削除されています。
ちなみに、個別の動いているコンテナを削除するコマンドがあるように、全ての動いているコンテナを一括で削除するコマンドもあります。以下のコマンドです。
docker-compose down
このコマンドにより、動いているコンテナ(正確にはコンテナとネットワーク)を一括で削除できます。
ただ、一つ注意点があります。それは、docker-compose.ymlに紐付くコンテナしか削除できない点です。
別のプロジェクトのdocker-compose.ymlで立ち上げたコンテナも含めて一括で削除することはできないので、ご注意下さい。
不要なDockerイメージを削除するコマンドまとめ
個別のイメージを削除する場合と、全てのイメージを一気に削除する場合とで分けて紹介します。
個別のDockerイメージを削除するコマンド
まずは、docker images
でDockerイメージの一覧を確認しましょう。
今回は一番上のDockerイメージ(laravelapp_php)を削除します。以下のコマンドを打ってください。
docker rmi [IMAGE ID]
イメージが削除できているか確認しましょう。
一番上にあったDockerイメージ(laravelapp_php)を削除することができました。
docker rmi [IMAGE ID]
だけでなく、docker image rm [IMAGE ID]
でも個別のDockerイメージを削除することはできます。
全てのDockerイメージを一括削除するコマンド
次に、一括で全てのDockerイメージを削除するコマンドを紹介します。
現状、Dockerイメージはこのようになっています。
この状態で以下のコマンドを打ちましょう。これで全てのDockerイメージが削除されるはずです。
docker rmi $(docker images -q)
実際に削除できているか確認しましょう。
全てのDockerイメージを削除できました。
おわりに:不要なDockerコンテナ・イメージを削除するコマンドまとめ
最後に今回紹介したDockerイメージおよびコンテナを削除するコマンドをまとめます。
※[]は付ける必要ありません
- 個別の停止しているDockerコンテナを削除するコマンド
docker rm [CONTAINER ID]
- 個別の動いているDockerコンテナを削除するコマンド
docker rm -f [CONTAINER ID]
- 全ての停止しているDockerコンテナを一括削除するコマンド
docker rm $(docker ps -a -q)
- 全ての(docker-compose.ymlに紐付く)動いているDockerコンテナを一括削除するコマンド
docker-compose down
- 個別のDockerイメージを削除するコマンド
docker rmi [IMAGE ID]
- 全てのDockerイメージを一括削除するコマンド
docker rmi $(docker images -q)
少しでも参考になっていたら幸いです。