気がつくと古いDockerイメージがたまってくるので、対話的に削除するシェルスクリプトを作成。docker image prune
またはdocker system prune
と合わせて使うと便利かもしれない。
#/bin/bash
for image_str in $(docker images --format "{{.Repository}}:{{.Tag}}_{{.ID}}")
do
while true
do
id=${image_str#*_}
image=${image_str%_*}
tag=${image##*:}
read -p "${image} delete? (y/n/a):" yn
case $yn in
[yY]*)
if [ ${tag} = "<none>" ]; then
docker rmi ${id}
else
docker rmi ${image}
fi
echo "deleted"; echo ""; break ;;
[nN]*)
echo "not deleted"; echo ""; break ;;
[aA]*)
echo "abort"; echo ""; exit ;;
esac
done
done
実行例
$ ./docker-image-cleaner.sh
sotoiwa540/qiita-checker:1.1 delete? (y/n/a):n
not deleted
python:3-alpine delete? (y/n/a):n
not deleted
python:3 delete? (y/n/a):n
not deleted
websphere-liberty:18.0.0.4-kernel delete? (y/n/a):n
not deleted
sotoiwa540/qiita-checker:<none> delete? (y/n/a):y
Untagged: sotoiwa540/qiita-checker@sha256:d63ae4540f58c350193c8c636068e4caf72e00feb779fc626f6fd0adfbd98286
Deleted: sha256:2dfc9b8592bba73fc50ae4217df19e4e89b272c50f32b7491d03a9febc17e3ec
Deleted: sha256:17e767783cad1be9e2c81baf4e073cab51737c93503326114a7cfcf3cab68c11
Deleted: sha256:271a6c0d66359aec911a079c67039f5c79568e5c65a2d4a4d592ed212113fab9
Deleted: sha256:9ed64b9fca76020a3eb153a27a66088a38d4174d05ad4425ff7e79b9be1992f9
Deleted: sha256:8a46f8cc49d88d47db4cade46c82ab962da5a027e5e41702936e258b6c1a686d
deleted
busybox:latest delete? (y/n/a):y
Untagged: busybox:latest
Untagged: busybox@sha256:7964ad52e396a6e045c39b5a44438424ac52e12e4d5a25d94895f2058cb863a0
Deleted: sha256:3a093384ac306cbac30b67f1585e12b30ab1a899374dabc3170b9bca246f1444
Deleted: sha256:683f499823be212bf04cb9540407d8353803c25d0d9eb5f2fdb62786d8b95ead
deleted
$