Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
619
Help us understand the problem. What is going on with this article?
@shisama

コマンドでDockerコンテナを停止・削除、イメージの削除をする

起動しているすべての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_までお願い致します。

619
Help us understand the problem. What is going on with this article?
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
shisama
Node.js Core Collaborator. 関西Node学園Organizer.

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
619
Help us understand the problem. What is going on with this article?