未熟学生エンジニアブログ

プログラミング・Web開発をする大学院生のブログ

dockerでコンテナの停止から、だいたい全部消し去るまで

はじめに

dockerをコピペ以外で初めて使って、停止・削除系のコマンドの習得に結構苦戦したので、忘れないように一連の流れのメモ。

dockerのバージョン

Docker Community Edition Version 17.12.0-ce-mac55 (23011) Channel: stable

コンテナの起動

$ docker run -it -d

とか

$ docker-compose up -d

などでやると思います

コンテナの停止

docker-composeを使った人は、

$ docker-compose stop # コンテナの停止

もしくは

$ docker-compose down # コンテナの停止と削除

docker run を使った人は

$ docker ps --no-trunc #CONTAINER_IDを表示
$ docker stop CONTAINER_ID

以下、docker-composeを使った時とdocker runを使った時の順で書いていきます

コンテナの削除

$ docker-compose rm

もしくは

$ docker rm CONTAINER_ID

イメージの削除

コンテナだけでなく、必要であればイメージも削除する必要があります (ただし、以下の操作はイメージを使用しているコンテナが停止していることが前提です)

一個ずつ消す場合
$ docker images -a
$ docker rmi IMAGE_NAME

使われていないイメージを全て消す場合
$ docker images -aq | xargs docker rmi

ボリュームの削除

ボリュームを使った人は、コンテナを消してもボリュームが残っています。 必要でなければ、毎回消しましょう

一個ずつ消す場合
$ docker volume ls -f dangling=true
$ docker volume rm VOLUME_NAME

使われていないボリュームを全て消す場合
$ docker volume ls -qf dangling=true | xargs docker volume rm

ストレージの確認

$ df -h # 削除後すぐには反映されない可能性があります

終わりに

$ docker system prune

は、結構万能に見えて消しきれていない場合もあります。
特にイメージやボリュームは消えてない時があるような気がします。確認してませんが。w

なんかdockerは色々とつまることも多く、バージョンアップによりコマンドや書き方が変わるので大変ですね。バージョンはできるだけ最新のものを使うように順次更新するようにしていくのが良いですね。

もっとスマートかもしれない資料

不要コンテナイメージの削除 | technote