Help us understand the problem. What is going on with this article?

一発ですべてのDockerコンテナを停止・削除、イメージの削除をする

More than 1 year has passed since last update.

起動しているすべてのDockerコンテナの停止や削除をするときに使っているコマンドが便利なので紹介したいと思います。
紹介するコマンドはDocker For Macで実行し確認しました。

TL;DR

  • 全コンテナ停止: docker stop $(docker ps -q)
  • 全コンテナ削除: docker rm $(docker ps -q -a)
  • 全イメージ削除: docker rmi $(docker images -q)

すべてのコンテナを停止する

docker stop $(docker ps -q)

docker stopに関しては説明不要かと思います。
$(docker ps -q)の部分に関してですが、
docker ps-qフラグを付けることでコンテナのIDのみを取得します。

例えば、以下のように起動しているコンテナがある場合

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
e2d41562fb71        ubuntu              "/bin/bash"         39 hours ago        Up 13 seconds                           affectionate_bassi
d886772499bd        ubuntu              "/bin/bash"         45 hours ago        Up 12 seconds                           gallant_curran
96b81bf5c03d        alpine              "/bin/sh"           47 hours ago        Up 11 seconds                           cocky_chebyshev

docker ps -qを実行すると以下のようにコンテナIDのみ表示されます。

e2d41562fb71
d886772499bd
96b81bf5c03d

このコンテナIDのみ取得する方法を利用しています。

docker stop $(docker ps -q)

は以下を実行しているのと同じです。

docker stop e2d41562fb71 d886772499bd 96b81bf5c03d

すべてのコンテナを削除する

要領は前項と同じです。

docker rm $(docker ps -q -a)

docker psでは起動しているコンテナのみ表示します。
停止しているコンテナも含めすべてのコンテナを表示するには-aフラグを用います。

ただし停止しているコンテナのみを削除するので、全てのコンテナを削除するには前項で紹介した方法を用いてコンテナをすべて停止する必要があります。

すべてのイメージを削除する

docker rmi $(docker images -q)

docker imagesでもpsコマンドと同じように-qフラグを用いることでイメージIDのみ取得することができます。

通常はコンテナが停止していないとDockerのイメージを削除することができませんが、-fフラグを用いることでコンテナが削除されていなくてもイメージを削除することができます。

docker rmi $(docker images -q) -f

ただしコンテナが起動している場合はイメージを削除できませんのでコンテナを停止する必要があります。

docker stop $(docker ps -q) && docker rmi $(docker images -q) -f

最後に

筆者は.bash_profileに以下を記述しaliasに登録しています。

alias docker-purge='docker stop $(docker ps -q) && docker rmi $(docker images -q) -f'

一つ一つコンテナの停止・削除、イメージの削除を行っていたときより非常に捗るようになりました。
本記事が皆様の一助になると幸いです。

最後までお読み頂きありがとうございました。不備や質問はコメント欄またはTwitter@shisama_までお願い致します。

shisama
Node.js Core Collaborator. 関西Node学園Organizer.
https://shisama.dev
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした