今回は、不要なDokerコンテナおよびDockerイメージを削除するコマンドをまとめます。
あくまでコマンド(おまじない)を書いているだけで、裏側のロジックとか難しいことは書いていないのでご了承下さい。
※とにかく削除のコマンドだけ知りたい方は、以下のContentsから3の「おわりに」へ飛んで下さい。
不要なDockerコンテナを削除するコマンドまとめ
まずはコンテナからです。
個別のコンテナを削除する場合と、全てのコンテナを一気に削除する場合とで分けて紹介します。
個別のDockerコンテナを削除するコマンド
まずは立ち上げているコンテナを確認しましょう。docker ps
で動いているコンテナ(STATUS:Up)を、docker ps -a
で動いているコンテナと停止しているコンテナ(STATUS:Exited)を確認できます。
![docker ps -aで動いているコンテナと止まっているコンテナを確認](https://www.engilaboo.com/wp-content/uploads/2020/06/one-e1594898243685-1024x98.png)
※docker-composeを使ってコンテナを立ち上げた場合、docker-compose ps
でもコンテナを確認できます(-aは必要ありません)。ただ、docker-compose.ymlファイルを置いてあるディレクトリまたは、docker-compose.ymlファイルを置いてあるディレクトリの子ディレクトリ以外では、このコマンドを打ってもエラーが出るので注意しましょう。
動いているコンテナは基本的には削除できないので、まずはコンテナを止めましょう。docker-composeでコンテナを立ち上げた場合は、docker-compose stop
で全てのコンテナを停止させることができます。
個別でコンテナを停止させたい場合は、docker stop [CONTAINER ID]
でコンテナを停止させましょう。今回は、二つあるコンテナの内の片方を停止させます。
![コンテナを停止させる](https://www.engilaboo.com/wp-content/uploads/2020/06/two-e1594898914147-1024x134.png)
片方のコンテナを停止(Exited)させることができました。
次に、この停止したコンテナを削除しましょう。個別のコンテナを削除するには、以下のコマンドを使います。
docker rm [CONTAINER ID]
※実際に書くときは、[]は必要ありません
実際に上記のコマンドを使ってみましょう。[CONTAINER ID]には、止まっているコンテナのIDを指定します。
![コンテナを消す](https://www.engilaboo.com/wp-content/uploads/2020/06/three-1024x39.png)
削除できているか確認しましょう。
![コンテナが削除できているか確認](https://www.engilaboo.com/wp-content/uploads/2020/06/four-e1594898950281-1024x73.png)
特定のコンテナを削除することができました。
「動いているコンテナは基本的には削除できない」と書きましたが、実は動いているコンテナも強制削除することは可能です。以下のコマンドを使います。
docker rm -f [CONTAINER ID]
全てのDockerコンテナを一括削除するコマンド
次に、一括で全てのDockerコンテナを削除するコマンドを紹介します。
この二つのコンテナを一括で削除してみましょう。
![動いているコンテナの確認](https://www.engilaboo.com/wp-content/uploads/2020/06/five-e1594898968223-1024x102.png)
まずは二つのコンテナを止めます。(止めないと今回紹介するコマンドを打っても削除できません)
二つのコンテナを停止させることができました。
この状態で、以下のコマンドを打ってください。これで二つのコンテナを一括で消すことができます。
docker rm $(docker ps -a -q)
![全てのコンテナを一括で削除する](https://www.engilaboo.com/wp-content/uploads/2020/06/seven-1024x51.png)
コンテナが消えているか確認してみましょう。
![コンテナが消えているか確認する](https://www.engilaboo.com/wp-content/uploads/2020/06/eight-e1594898988764-1024x59.png)
全てのコンテナが削除されています。
ちなみに、個別の動いているコンテナを削除するコマンドがあるように、全ての動いているコンテナを一括で削除するコマンドもあります。以下のコマンドです。
docker-compose down
このコマンドにより、動いているコンテナ(正確にはコンテナとネットワーク)を一括で削除できます。
![docker-compose downで動いているコンテナを一括削除](https://www.engilaboo.com/wp-content/uploads/2020/06/do.png)
ただ、一つ注意点があります。それは、docker-compose.ymlに紐付くコンテナしか削除できない点です。
別のプロジェクトのdocker-compose.ymlで立ち上げたコンテナも含めて一括で削除することはできないので、ご注意下さい。
不要なDockerイメージを削除するコマンドまとめ
個別のイメージを削除する場合と、全てのイメージを一気に削除する場合とで分けて紹介します。
個別のDockerイメージを削除するコマンド
まずは、docker images
でDockerイメージの一覧を確認しましょう。
![現状のDocker imageの一覧を確認](https://www.engilaboo.com/wp-content/uploads/2020/06/nine-e1594898681984-1024x247.png)
今回は一番上のDockerイメージ(laravelapp_php)を削除します。以下のコマンドを打ってください。
docker rmi [IMAGE ID]
![個別のDocker imageを削除する](https://www.engilaboo.com/wp-content/uploads/2020/06/ten-e1594898708378-1024x237.png)
イメージが削除できているか確認しましょう。
![Dockerイメージが削除できているか確認](https://www.engilaboo.com/wp-content/uploads/2020/06/eleven-e1594898732225-1024x225.png)
一番上にあったDockerイメージ(laravelapp_php)を削除することができました。
docker rmi [IMAGE ID]
だけでなく、docker image rm [IMAGE ID]
でも個別のDockerイメージを削除することはできます。
全てのDockerイメージを一括削除するコマンド
次に、一括で全てのDockerイメージを削除するコマンドを紹介します。
現状、Dockerイメージはこのようになっています。
![Docker imageの一覧を確認](https://www.engilaboo.com/wp-content/uploads/2020/06/twelve-e1594898749598-1024x197.png)
この状態で以下のコマンドを打ちましょう。これで全てのDockerイメージが削除されるはずです。
docker rmi $(docker images -q)
![全てのDocker imageを一括で削除](https://www.engilaboo.com/wp-content/uploads/2020/06/thirteen-e1594898797368-1024x239.png)
実際に削除できているか確認しましょう。
![Docker imageが削除できているか確認](https://www.engilaboo.com/wp-content/uploads/2020/06/fourteen-e1594898817757-1024x63.png)
全ての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)
少しでも参考になっていたら幸いです。