こしあん
2022-11-22

不要なDockerイメージを一括で削除するテクニック


1.7k{icon} {views}

Dockerで不要な(リポジトリやタグがnone)のイメージを、イメージIDをいちいち入力せずに一括で消去する方法を紹介します。ゴミイメージが溜まったときに便利です。

想定

以下のような状況で、不要な(REPOSITORYが「none」の)Dockerイメージを一括で消去したい。

$ docker images
REPOSITORY                          TAG         IMAGE ID       CREATED          SIZE
<none>                              <none>      780bcd6071d1   8 seconds ago    1.03GB
<none>                              <none>      d57d97605ad8   19 seconds ago   1.03GB
<none>                              <none>      72a739cdc9e5   31 seconds ago   1.03GB
<none>                              <none>      ea72ec46e38a   39 seconds ago   1.03GB
fastapi_02_demo                     latest      6f2bb0b27a65   3 hours ago      1.03GB
fastapi_01_demo                     latest      dab14bd5bd2e   10 hours ago     1GB
tiangolo/uvicorn-gunicorn-fastapi   python3.8   d0662a57a8c4   10 days ago      1GB

Dockerのビルドやデバッグでハマったときにこうなりがち。「docker rmi 780bcd6071d1 d57d97605ad8」…といちいち入力するのは面倒くさい。

結論

docker rmi $(docker images -f "dangling=true" -q)

これでOK

解説

  • 「docker images」の「-f」は指定した条件で抽出する「フィルタリング」オプション
  • 「dangling=true」は、ダングリング(宙ぶらりんな)状態。具体的には「none:none」の状態のイメージ
  • 「-q」は「–quiet」のオプションで、イメージIDのみ表示

$以下の部分のみ実行すると、

$ docker images -f "dangling=true" -q
780bcd6071d1
d57d97605ad8
72a739cdc9e5
ea72ec46e38a

先程示したコマンドは、削除するイメージIDを動的に出力していることを表します。

実際に全部を実行すると、望んだ通りの結果になっているのがわかります。

$ docker rmi $(docker images -f "dangling=true" -q)
Deleted: sha256:780bcd6071d19dfa00c5442327001a304f8c2134636435d1aa251c54c69748f6
Deleted: sha256:6048a2893e194ef868146e5fbadd55d2dfe162bb9e8f53327be516d52ab9ebfd
Deleted: sha256:d57d97605ad84c01db1150ee3d6f56fd35c632d1510c2bc337e4e2e2329737f9
Deleted: sha256:387f9f06c879a096491e87bd381f631c28d314c81564f6c7a826ebbb77cb2101
Deleted: sha256:72a739cdc9e53e2dee92876e0d9f726c38d6e13442a75ab39eb2cd22cb2a58d7
Deleted: sha256:01260c8d1e3a0a14cd6927c73c79551ada58b2f4f059a99b6f50376a14d8490a
Deleted: sha256:ea72ec46e38a8f05833c6d36b3e088853860273c24cacf2f29c74a00a2ab78cf
Deleted: sha256:7369d6815b94831dea1d17e392e43c572ca1637348547757056a40fb1063c1d1
$ docker images
REPOSITORY                          TAG         IMAGE ID       CREATED        SIZE
fastapi_02_demo                     latest      6f2bb0b27a65   3 hours ago    1.03GB
fastapi_01_demo                     latest      dab14bd5bd2e   10 hours ago   1GB
tiangolo/uvicorn-gunicorn-fastapi   python3.8   d0662a57a8c4   10 days ago    1GB

参考

https://docs.docker.jp/engine/reference/commandline/images.html#dangling



Shikoan's ML Blogの中の人が運営しているサークル「じゅ~しぃ~すくりぷと」の本のご案内

技術書コーナー

北海道の駅巡りコーナー


Add a Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です