1. ホーム

[解決済み】Docker remove <none> TAGイメージ

2022-04-02 16:21:04

質問

root@server:~# docker images -a        
REPOSITORY              TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
<none>                  <none>              5e2dfc857e73        5 days ago          261.6 MB
<none>                  <none>              d053e988f23d        5 days ago          261.6 MB
<none>                  <none>              1d5d4a2d89eb        5 days ago          261.6 MB
<none>                  <none>              ea0d189fdb19        5 days ago          100.5 MB
<none>                  <none>              26c6175962b3        5 days ago          100.5 MB
<none>                  <none>              73d5cec4a0b3        5 days ago          100.5 MB
<none>                  <none>              e19590e1bac1        5 days ago          100.5 MB

以下を試してみました。

docker rmi $(docker images | grep "^<none>" | awk "{print $3}")

そして、次のようなものです。

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

以下のようなエラーが発生します。

docker: "rmi" requires a minimum of 1 argument.
See 'docker rmi --help'.

Usage:  docker rmi [OPTIONS] IMAGE [IMAGE...]

Remove one or more images

解決方法は?

タグのない画像(ラベルのない画像、またはタグのあるラベルのない画像)だけをリストアップしてみることができます。

docker images -q -a | xargs docker inspect --format='{{.Id}}{{range $rt := .RepoTags}} {{$rt}} {{end}}'|grep -v ':'

しかし、そのタグ付けされていない画像の中には、他の人が必要としているものもあるかもしれません。

ダングリングイメージのみを削除するのが良い :

docker rmi $(docker images --filter "dangling=true" -q --no-trunc)

2016年9月に"でfor docker 1.13+を紹介したように。 古くて使われていないDockerイメージを削除する方法 "を実行することもできます。 image prune コマンド :

docker image prune


とはいうものの。 ジャナカバンダラ 記載事項 コメントで :

これは ではなく 削除 <none> -タグ付けされた画像を提供してくれる (例) foo/bar:<none> を使用する必要がありました。 docker images --digestsdocker rmi foo/bar@<digest>

ジャナカは"を参照しています。 タグで署名された画像を削除する方法 からの "。 ポール・V・ノバレーゼ :

# docker images
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
pvnovarese/mprime        latest              459769dbc7a1        5 days ago          4.461 MB
pvnovarese/mprime        <none>              459769dbc7a1        5 days ago          4.461 MB

<ブロッククオート

診断ステップ

この2つのエントリーの違いを見るために --digests=true オプション (タグのないエントリーはDocker Content Trustの署名ダイジェストを持つ)。

# docker images --digests=true
REPOSITORY               TAG                 DIGEST                                                                    IMAGE ID            CREATED             SIZE
pvnovarese/mprime        latest              <none>                                                                    459769dbc7a1        5 days ago          4.461 MB
pvnovarese/mprime        <none>              sha256:0b315a681a6b9f14f93ab34f3c744fd547bda30a03b55263d93861671fa33b00   459769dbc7a1        5 days ago     

なお、Paulは moby issue 18892 :

署名された画像を取り出した後、quot;extra"エントリがあります(タグ付き <none> ) を"で表示します。 docker images "を出力します。

そのため、以下のようなことが困難になっています。 rmi を強制的に削除するか、適切なタグ付けされたエントリーを最初に削除するか、ダイジェストで削除する必要があります。