Docker rimuove le immagini TAG <nessuna>


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

Ho provato quanto segue:

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

E il seguente:

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

Ottieni il seguente errore:

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

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

Remove one or more images

È un po 'tardi ma devo aggiungere questo commento per altri utenti. Se utilizzi il prompt dei comandi di Windows, non funzionerà. Perché il prompt dei comandi non supporta le funzioni interne. Prova le linee esatte con Windows PowerShell
er-han

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

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

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

@Karl Morrison: Eri quasi arrivato: ho appena perso -a (--all) in docker images:)
mirekphd

Risposte:


202

Puoi provare a elencare solo le immagini senza tag (quelle senza etichette o con etichetta senza tag):

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

Tuttavia, alcune di queste immagini senza tag potrebbero essere necessarie ad altri.

Preferisco rimuovere solo le immagini penzolanti :

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

Come ho già detto per la finestra mobile 1.13+ nel settembre 2016 in " Come rimuovere le immagini Docker vecchie e inutilizzate ", puoi anche eseguire il image prunecomando :

docker image prune

Detto questo, Janaka Bandara menziona nei commenti :

Questo non ha rimosso le <none>immagini con tag per me (ad esempio foo/bar:<none>); Ho dovuto usare docker images --digestsedocker rmi foo/bar@<digest>

Janaka fa riferimento a " Come rimuovere un'immagine firmata con un tag " di 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

Passaggi diagnostici

Puoi vedere la differenza in queste due voci se utilizzi l' --digests=trueopzione (la voce senza tag ha il digest della firma di 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     

Nota che Paolo menziona anche il problema di moby 18892 :

Dopo aver estratto un'immagine firmata, c'è una voce "extra" (con tag <none>) docker imagesnell'output " ".
Ciò rende difficile rmil'immagine (devi forzarla, oppure eliminare prima la voce contrassegnata correttamente o eliminare per digest.


6
Questo non ha rimosso le <none>immagini con tag per me (ad esempio foo/bar:<none>); Ho dovuto usare docker images --digestse docker rmi foo/bar@<digest>come descritto su success.docker.com/KBase/…
Janaka Bandara

1
@JanakaBandara Grazie. Ho incluso il tuo commento nella risposta (con alcuni link aggiuntivi)
VonC

per mesudo 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
Jamie Hutber

@JamieHutber "docker rmi" richiede almeno 1 argomento. Ciò suggerisce immagini docker --filter "dangling = true" -q --no-trunc non restituisce nulla, il che significa che non ci sono immagini pendenti?
VonC

Grazie VonC in realtà non è così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

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

Puoi provarlo semplicemente


1
La soluzione più rapida e semplice per me
segna

Devo aggiungere --forcealla fine. Quindi il comando sarà simile docker images | grep none | awk '{ print $3; }' | xargs docker rmi --force
a-


6

Puoi andare docker rmi $(docker images -f "dangling=true" -q). Vedere la documentazione delle immagini per ulteriori opzioni.

$ 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

Secondo la documentazione docker puoi elencare solo immagini senza tag (pendenti) con estensione

$ docker images -f "dangling=true"

e reindirizzali a docker rmicomandi in questo modo:

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

Si noti che il -qparametro mostra solo gli ID numerici dei contenitori.


1
Non è simile a quello che ho proposto nella mia risposta nel 2015?
VonC

5

Puoi controllare se il filtro "penzoloni" non funziona più

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

Usa il sistema docker per rimuovere le immagini penzolanti

$ 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]

È possibile utilizzare --forceper non richiedere conferma

$ docker system prune --force

5

Basta eseguire questo comando:

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

4

L'ho trovato docker image prune -fmolto utile e lo uso sempre durante il mio lavoro quotidiano, l'utilizzo del tag -fnon richiede conferma. Maggiori dettagli qui


3

Rimuovere le immagini che hanno nonecome nome del repository utilizzando quanto segue:

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

Rimuovi le immagini che hanno nonetag o nome del repository:

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


2

docker system prune farà il trucco, rimuove

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

Ma usalo, con la cautela!


2

Per rimuovere tutte le immagini con nonedobbiamo essere sicuri di aver rimosso tutti i contenitori arrestati che possono utilizzare run:

docker rm $(docker ps -a -q)

quindi possiamo rimuovere tutte le immagini:

docker image prune


1

Il comando seguente funziona per me. si tratta solo di semplici immagini grep e "" ottiene l'id immagine docker e rimuove tutte le immagini. Semplice comando singolo come deve.

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


1

Questa è un'estensione della risposta di tansadio:

Se ricevi il seguente errore:

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

Puoi forzarlo con --force:

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

1

Di seguito verranno rimosse tutte le <none>immagini

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

Puoi forzare la rimozione cambiando docker rmiin docker rmi -fanche se non ti consiglio di farlo.

Alcune delle <none>immagini potrebbero essere correlate ad altre immagini, quindi per sicurezza non utilizzare i -ftag.


0

È semplice e chiaro,

Anche io ho impiegato 3 giorni per capire questo semplice e netto errore.

L'immagine docker non viene creata correttamente

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

Quindi ho rimosso l'ottava riga da Dockerfile, questa volta è stato un segnale di successo.

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

Dice che è stato etichettato con successo dem: expo, questa riga è imp durante il processo di finestra mobile.


0

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


0

Tutti

Condivisione del comando PowerShell per gli amanti di Windows (nel caso in cui non si disponga di bash, grep o awk)

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


0

Rimuovi tutti i contenitori usciti

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

o rimuovere i contenitori secondo uno schema

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

0

prova questo per vedere l'elenco delle immagini della finestra mobile ID con tag <none>

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

e quindi puoi eliminare tutte le immagini con tag <none>. questo ha funzionato per me.

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

0

Funziona al 100%: immagini docker | grep none | awk '{print $ 3}' | xargs docker rmi -f



-1

Basta rimuovere le immagini utilizzando i loro ID:

# docker rmi 5e2dfc857e73 d053e988f23d ...

-2

Le immagini penzolanti sono fantasmi delle precedenti build e pull, semplicemente cancellale con: docker rmi $ (docker images -f "dangling = true" -q)


L'OP afferma di aver già provato questo comando esatto ma non è riuscito. Inoltre, questa risposta è già stata data almeno due volte.
CaringDev

-5
docker rmi $(docker images -a -q)

Ha dichiarato le seguenti immagini dove in uso. Penso che questo comando elimini le immagini indesiderate.


2
questo non rimuove tutte le immagini?
marianobianchi

3
questo rimuove tutte le immagini inutilizzate e non dovrebbe essere contrassegnato come risposta corretta.
Ghashange
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.