Ubuntu 22.04: 古い Docker images を削除する

 
もうずっと前にビルドして以降、もはや使ってない docker images の残骸がローカルにいっぱい残ってたのでメモ。

Docker が今どれだけストレージを使ってるかを確認。

docker system df

6ヶ月以上前にビルドしたイメージを削除するのと、あとはビルドキャッシュも全部削除する。

#!/bin/bash

six_mo_ago=$(date -d "6 month ago" +%s)

docker images --format "{{.Repository}}:{{.Tag}} {{.CreatedAt}}" | while read image date; do
    datepart=$(echo $date | awk '{print $1}')
    image_date=$(date -d "$datepart" +%s)
    if [ $image_date -lt $six_mo_ago ]; then
        echo "Removing $image..."
        docker rmi -f $image
    fi
done

docker builder prune -f

6ヶ月以上アップデートしてないイメージもこれで消えちゃうので、そこは注意。

特定の文字列を含むイメージだけに絞りたいなら、 下記みたいに while ループの前に grep すれば良い。

docker images --format "{{.Repository}}:{{.Tag}} {{.CreatedAt}}" | grep -E 'foo|bar|baz' | while read image date; do