Dockerは<none>のTAGイメージを削除します


139
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

少し遅いですが、他のユーザーのためにこのコメントを追加する必要があります。Windowsコマンドプロンプトを使用している場合、これは機能しません。コマンドプロンプトは内部関数をサポートしていないためです。Windows PowerShellで正確な行を試してください
er-han

1
docker rmi $(docker images -a | grep "^<none>" | awk '{print $3}')
OndraŽižka2018年

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

5
docker rmi $(docker images -f dangling=true -q)
Jinna Balu

@カール・モリソン:あなたはもうすぐそこにいた:-a(docker images
all

回答:


202

タグの付いていない画像(ラベルのないもの、またはタグのないラベルのあるもの)のみを一覧表示できます。

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)

docker 1.13+について2016年9月の「古い未使用のDockerイメージを削除する方法」で述べたようにimage prune次のコマンドも実行できます。

docker image prune

そうは言っても、Janaka Bandaraコメントでのように述べています

これは私のためにタグ付けされた画像を削除しません<none>でした(例えばfoo/bar:<none>); 私は使用docker images --digestsしなければならなかったdocker rmi foo/bar@<digest>

Janakaは、Paul V. Novareseのタグ付きの署名付き画像を削除する方法」を参照しています。

# 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

診断手順

この--digests=trueオプションを使用すると、これら2つのエントリの違いを確認できます(タグなしのエントリには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の問題18892についても言及していることに注意してください。

署名されたイメージをプルした後<none>、「docker images」出力に「タグ」付きの「追加」エントリがあります。
これによりrmi、画像の作成が困難になります(強制するか、最初に適切にタグ付けされたエントリを削除するか、ダイジェストで削除する必要があります。


6
これは<none>私のためにタグ付けされた画像を削除しませんでした(例えばfoo/bar:<none>); 私は使用する必要がdocker images --digestsありdocker rmi foo/bar@<digest>success.docker.com / KBase /…で
Janaka Bandara

1
@JanakaBandaraありがとうございます。私はあなたのコメントを回答に含めました(いくつかの追加リンクを含む)
VonC '12

私のためにsudo docker rmi $(docker images --filter "dangling=true" -q --no-trunc) Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.35/images/json?filters=%7B%22dangling%22%3A%7B%22true%22%3Atrue%7D%7D: dial unix /var/run/docker.sock: connect: permission denied "docker rmi" requires at least 1 argument. See 'docker rmi --help'. Usage: docker rmi [OPTIONS] IMAGE [IMAGE...] [flags] Remove one or more images
ジェイミー・ハットバー

@JamieHutber "docker rmi"には少なくとも1つの引数が必要です。これは、Dockerイメージ--filter "dangling = true" -q --no-truncが何も返さないことを示唆しています。つまり、ダングリングイメージがないことを意味しますか?
VonC、2018

VonCに感謝します。実際はそうではありませんhutber@hutber-blade /var/www/dockerfile-wizard $ sudo docker images --filter "dangling=true" -q --no-trunc sha256:c58f4e4b10b1f862d78f96e90bdf13ffe37993279d0992be46d5c15dad51421e sha256:db28e821bc3f337caf711a664bc529be5db8894dd73c5b013ad814cc1e9fc21b sha256:257936750a7d43ae77c713c2cb18342be935de7d3b8fad23d6664fc64acfe753 sha256:6b815cefeb527885b2b9dd831f7f40b05942f00d1367274833a6274154d8ce43
Jamie Hutber、2018

42
docker images | grep none | awk '{ print $3; }' | xargs docker rmi

これは簡単に試すことができます


1
私にとって最も速くて簡単な解決策
マーク

--force最後に追加する必要があります。だから、コマンドがlike-になります docker images | grep none | awk '{ print $3; }' | xargs docker rmi --force
Munim Dibosh


6

行くことができますdocker rmi $(docker images -f "dangling=true" -q)。その他のオプションについては、画像のドキュメントをご覧ください。

$ docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
<none>                      <none>              94870cda569b        4 seconds ago       673MB
python                      2.7                 320a06f42b5f        10 days ago         673MB
mysql                       latest              e799c7f9ae9c        2 months ago        407MB
gcavalcante8808/semaphore   latest              86e863e11461        2 months ago        537MB
redis                       latest              e32ef7250bc1        2 months ago        184MB
rabbitmq                    3.6.9-management    7e69e14cc496        2 months ago        179MB
rabbitmq                    3.6.9               eb2e4968538a        2 months ago        179MB
jordan/rundeck              latest              6d40b57b1572        2 months ago        660MB
rabbitmq                    3.5.6-management    dbfe8d18809a        19 months ago       304MB

$ docker rmi $(docker images --format '{{.ID}}' --filter=dangling=true)
Deleted: sha256:94870cda569b8cf5f42be25af107d464c993b4502a1472c1679bf2d213b6c0a6

5

dockerのドキュメントによると、タグの付いていない(ぶら下がっている)画像のみを一覧表示できます

$ docker images -f "dangling=true"

それらをそのdocker rmiようなコマンドにリダイレクトします:

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

-qparam thatsはコンテナの数値IDのみを表示することに注意してください。


1
2015年の回答で提案したものと似ていませんか?
VonC、

5

フィルター「ダングリング」が機能していないかどうかを確認できます

$ docker images -f “dangling=true” -q
Error response from daemon: Invalid filter 'dangling'

docker system pruneを使用してぶら下がり画像を削除する

$ docker system prune
WARNING! This will remove:
        - all stopped containers
        - all networks not used by at least one container
        - all dangling images
        - all dangling build cache
Are you sure you want to continue? [y/N]

--force確認を求めないように使用できます

$ docker system prune --force

4

私はdocker image prune -f最も便利だと思ったので、毎日の仕事中はいつもそれを使用して-fいます。タグを使用しても確認のプロンプトは表示されません。詳細はこちら


4

次のコマンドを実行するだけです:

docker image prune --filter="dangling=true"

3

none以下を使用して、リポジトリ名としてのイメージを削除します。

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

noneタグまたはリポジトリ名を持つ画像を削除します。

docker rmi $(docker images | grep "none" | awk '{print $3}')


2

docker system prune トリックを行います、それは削除します

- all stopped containers
- all networks not used by at least one container
- all dangling images
- all dangling build cache

ただし、注意して使用してください。


2

ですべてのイメージを削除するnoneには、runを使用して停止したコンテナーをすべて削除する必要があります。

docker rm $(docker ps -a -q)

その後、すべての画像を削除できます。

docker image prune


1

以下のコマンドは私のために働いています。これは単なるgrep ""画像であり、Docker画像IDを取得してすべての画像を削除します。シンプルな単一コマンド。

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


1

これはタンサディオの答えの延長です:

次のエラーが発生した場合:

Error response from daemon: conflict: unable to delete <> (must be forced) - image is being used by stopped container <>

あなたはそれを強制することができます--force

docker images | grep none | awk '{ print $3; }' | xargs docker rmi --force

1

以下はすべての<none>画像を削除します

docker rmi $(docker images | grep none | awk '{print $3}')

あなたは、変更することにより、削除を強制することができますdocker rmidocker rmi -f、私はそれを行うことはお勧めしませんが。

一部の<none>画像は他の画像に関連している可能性があるため、安全のために-fタグを使用しないでください。


0

そのシンプルで明確な、

この簡単ではっきりとしたエラーを理解するのに3日かかりました。

Dockerイメージは正常にビルドされません

Step 7/13 : COPY jupyter_notebook_config.py /root/.jupyter/
 ---> bf29ce6fe6dc
Step 8/13 : COPY notebooks /notebooks
COPY failed: stat /var/lib/docker/tmp/docker-builder776981166/notebooks: no such file or directory
anarchist@anarchist-desktop:~/Documents/sam/dockerDem$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
<none>              <none>              bf29ce6fe6dc        9 seconds ago       1.27GB
ubuntu              16.04               a51debf7e1eb        3 weeks ago         116MB

次に、Dockerfileから8行目を削除しました。今回は成功です。

Successfully built b6724370f8ca
Successfully tagged dem:expo
anarchist@anarchist-desktop:~/Documents/sam/dockerDem$ docker run -it -p 8888:8888 dem:expo
[I 06:11:38.984 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret
[I 06:11:39.011 NotebookApp] Serving notebooks from local directory: /
[I 06:11:39.011 NotebookApp] The Jupyter Notebook is running at:
[I 06:11:39.011 NotebookApp] http://(296d81166725 or 127.0.0.1):8888/?token=496feb282ef749c05277ef57a51e8a56fedb1c6b337b9f92

それは首尾よくタグ付けされたdem:expoを言います、このラインはドッカープロセスの間のインプです。


0

docker rmi -f $(docker images -a | awk 'NR> 1 && $ 2 == "" {print $ 3}')


0

すべて

Windows愛好家向けのPowerShellコマンドの共有(bash、grep、awkがない場合に備えて)

(docker images) -like '*<none>*' | ForEach-Object { 
  $imageid=($_ -split "\s+")[2]
  docker rmi -f $imageid
}


0

終了したコンテナをすべて削除します

docker rm $(docker container ls -a -f status=exited -q)

またはパターンに従ってコンテナを削除する

docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi

0

タグ付きのリストDockerイメージIDを表示するには、これを試してください <none>

docker images -a | awk '/^<none>/ {print $3}'

そして、あなたはタグですべての画像を削除することができます<none>。これは私のために働いた。

docker rmi $(docker images -a | awk '/^<none>/ {print $3}')


-1

試す

docker rmi -f $(docker images -a | awk 'NR> 1 || $2 = "<none>" {print $3}') 、よりクリーンなコマンドがあるかもしれませんが

更新しました


1
これにより、タグ付けされていない画像削除されます。
K-SOの毒性が高まっています。

回答を更新しました
user2915097

コマンドdocker rmi -f $(docker images -a | awk 'NR> 1 || $2 = "" {print $3}は何もしません!
K-SOの毒性が高まっています。


-2

ダングリングイメージは、以前のビルドとプルからのゴーストです。次のコマンドで削除してください: docker rmi $(docker images -f "dangling = true" -q)


OPは、彼がこの正確なコマンドをすでに試したが失敗したと述べています。また、この回答はすでに2回以上与えられています。
CaringDev

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.