Dockerのイメージを削除する

最近忙しくてブログが書けていませんでしたが

そろそろGWも近いので家のPCの環境を今勉強中のdocker,ansibleとか使って

整理していきたいと思ってます。

そこでまずは勉強で使っていたdockerイメージを削除していったんきれいにします。

まずはimageの確認から

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              7                   2d194b392dd1        6 weeks ago         195MB
hello-world         latest              f2a91732366c        5 months ago        1.85kB

前回hello-worldと表示するだけのコンテナとcentosのコンテナを落としているため 2つ表示されています。

さっそくこのイメージを削除したいのですがdockerにはimegeとは別にコンテナがあるため 停止しているコンテナをすべて排除してからイメージを消すときれいに消えてくれるようです。 なのでまずはコンテナを削除します。

# docker rm -v $(docker ps -aq -f status=exited)
bc336a7d461c
3a910b78f0f9
6235b59692ed

3つ消えてくれましたどうやら2つのイメージで3つのコンテナがあったようです。

次に本命イメージを削除。まずはcentosから

$ docker rmi 2d194b392dd1
Untagged: centos:7
Untagged: centos@sha256:dcbc4e5e7052ea2306eed59563da1fec09196f2ecacbe042acbdcd2b44b05270
Deleted: sha256:2d194b392dd16955847a14f969b2dd319251471ffa6356be6d8f16c5bf53db9b
Deleted: sha256:b03095563b7956c62ae5a6d20e5959a950e3b1a96d4404c00b7da7393847494a

docker rmiはイメージの削除を表し、その後ろは削除するimegeIDを指定します。 なんかいろいろ出てますがどうやら、中間ファイルらしいです。

消えたか確認します。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              f2a91732366c        5 months ago        1.85kB

centosが消えていることが確認できました。続けてhello-worldを消します。

$ docker rmi f2a91732366c
Untagged: hello-world:latest
Untagged: hello-world@sha256:66ef312bbac49c39a89aa9bcc3cb4f3c9e7de3788c944158df3ee0176d32b751
Deleted: sha256:f2a91732366c0332ccd7afd2a5c4ff2b9af81f549370f7a19acd460f87686bc7
Deleted: sha256:f999ae22f308fea973e5a25b57699b5daf6b0f1150ac2a5c2ea9d7fecee50fdf

消えたか確認します

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

残っているコンテナがないか合わせて確認

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

残っているコンテナもないようです。

docker imageを消す場合は先にコンテナを消しからイメージを消せばゴミが残ることなくきれいに消えてくれるようです。 今回コンテナを消すときに、動いていないコンテナをすべて削除するコマンドで消しましたが、これだと必要なコンテナまで 消してしまうので、通常はdocker ps を実行して消したいコンテナのコンテナIDを調べてからdocker rm [コンテナID]を実行するよう にしてください。