Dockerコンテナをまとめて消す方法

IT
スポンサーリンク

Dockerコンテナの削除方法

Dockerイメージが消せない

使っていない不要なDockerイメージを消そうと思ってdocker image rm したら、エラーが発生して消せなかった。

Error response from daemon: conflict: unable to remove repository reference “centos” (must force) – container b9b9fe1532cc is using its referenced image 470671670cac

【解決方法】
削除対象のイメージから作ったコンテナが存在すると、そのイメージは消すことができません。削除対象のイメージから作ったコンテナをすべて削除してください。

名前指定でコンテナを起動できない

docker run -it –name xxxx で名前指定のコンテナを起動しようとしたら、起動できなかった。

docker: Error response from daemon: Conflict. The container name “/xxxx” is already in use by container “48dd7085ad41f1b0c746fe672b52310fdcdff71871f95d67b36c00bfc8e23c7e”. You have to remove (or rename) that container to be able to reuse that name.

【解決方法】
コンテナ名が既に使われていることが原因です。既にあるコンテナを削除するか、コンテナ名を別のものに変更して起動してください。

コンテナの確認方法

docker ps で実行中のコンテナの一覧が確認できます。

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f3f61183b8a0 ubuntu:latest "/bin/bash" 6 minutes ago Up 6 minutes ubuntu01
53377cd934d3 centos:latest "/bin/bash" 6 minutes ago Up 6 minutes centos01

停止しているコンテナも表示する場合は、docker ps -a ですべてのコンテナが確認できます。
STATUSがExitedのものは終了しています。()内は終了コードです。

> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f3f61183b8a0 ubuntu:latest "/bin/bash" 7 minutes ago Up 7 minutes ubuntu01
53377cd934d3 centos:latest "/bin/bash" 7 minutes ago Up 7 minutes centos01
48dd7085ad41 centos "/bin/bash" 21 minutes ago Exited (0) 20 minutes ago cen02
c60bcd328085 centos "/bin/bash" 21 minutes ago Exited (0) 21 minutes ago cen01
a617b97a4731 centos "/bin/bash" 30 minutes ago Exited (0) 30 minutes ago clever_herschel
29fcf1fca85b ubuntu "/bin/bash" 36 minutes ago Exited (0) 36 minutes ago happy_visvesvaraya
f26388c0514c ubuntu "/bin/bash" 37 minutes ago Exited (0) 37 minutes ago quirky_hawking
d544f24b7464 ubuntu "/bin/bash" 37 minutes ago Exited (0) 37 minutes ago agitated_darwin
4efef17c0b78 ubuntu "/bin/bash" 30 hours ago Exited (255) 21 hours ago nice_dubinsky

docker ps -a だと出力情報が多いので、横に伸びて途中で折返しされて見にくいことがあります。そんな時は、このように指定するとスペースを詰めて表示できます。

$ docker ps -a | sed -E s"/ +/ /g"

コンテナの削除

コンテナを削除する場合は、docker rm <コンテナID> [<コンテナID].. で削除できます。つまり消したいコンテナをスペース区切りで指定すれば良いのです。

まさか、ここですべてのコンテナIDをコピペで一つずつ消す、な~んてことはしないですよね? エンジニアなら一発で消してやりましょう。

スポンサーリンク

コンテナを一括削除する方法

docker ps-q を指定すると、コンテナIDだけ返してくれるので、それをループで回して docker rm コマンドで一気に消すことができます。実行中のコンテナは消えないので安心してください。

▼ Linuxの場合
$ for i in `docker ps -aq`; do docker rm $i; done

▼ Windowsの場合
> for /f %i in ('docker ps -aq') do docker rm %i
  • docker rm -f にすると、実行中のコンテナも強制削除します。
  • docker rm -fv にすると、実行中のコンテナとボリュームも強制削除します。

ばったん
ばったん

ばったんのオススメ書籍紹介コーナー!

左の書籍から順番に一言コメントします。

  • 教科書というだけあって基本的なことも丁寧に記載されていてオススメ
  • 実際になにができるのかをすぐに知りたい、という方向け
  • GCPやAWSが絡むならKubernetesも一緒に
  • インフラ傾向にある場合はこちら
  • Dockerを深堀りしたい方は定番のオライリー本

コメント

タイトルとURLをコピーしました