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 にすると、実行中のコンテナとボリュームも強制削除します。
コメント