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

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

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

1
docker system df

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/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 すれば良い。

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