Come si rimuove un'immagine in Docker?


Answers

Di seguito sono riportati alcuni metodi per rimuovere immagini / contenitori di finestra mobile:

Rimuovi una singola immagine

docker rmi image_name:version/image-id

Rimuovi tutte le immagini

docker rmi $(docker images -qf "dangling=true")

Uccidi i contenitori e rimuovili:

docker rm $(docker kill $(docker ps -aq))

Nota: sostituisci kill con stop per un arresto regolare

Rimuovi tutte le immagini ad eccezione di "my-image"

Usa grep per rimuovere tutti tranne my-image e ubuntu

docker rmi $(docker images | grep -v 'ubuntu\|my-image' | awk {'print $3'})

O (senza awk)

docker rmi $(docker images --quiet | grep -v $(docker images --quiet ubuntu:my-image))

Question

Sto usando Docker sotto Vagrant sotto OS X 10.8.4 (Mountain Lion), e ogni volta che provo a cancellare un'immagine salvata, ottengo un errore:

$ docker rmi some-image-id
2013/07/15 hh:mm:ss unexpected JSON input

Secondo l'aiuto di rmi , la sintassi corretta è la docker rmi IMAGE [IMAGE...] , e non sono sicuro di cosa farne.

Come posso cancellare un'immagine?

$ docker version
Client version: 0.4.8
Server version: 0.4.8
Go version: go1.1

$docker info
Containers: 1
Images: 3

È interessante notare che, quando docker ps , non vengono visualizzati contenitori. L'esecuzione di docker images mostra quattro (4) immagini di base e una (1) immagine di node .




Per le versioni 1.13 e successive:

docker image rm [OPTIONS] IMAGE [IMAGE...]

confrontando:

le [OPTIONS] sembrano non avere alcuna differenza.

--force , -f        Force removal of the image
--no-prune          Do not delete untagged parents

Da: Introduzione a Docker 1.13

CLI ristrutturato

In Docker 1.13, abbiamo raggruppato ogni comando per sederci sotto l'oggetto logico con cui sta interagendo. Ad esempio, l' list e l' start dei contenitori sono ora sottocomandi del docker container e la history è un sottocomando docker image .

Queste modifiche ci consentono di ripulire la sintassi CLI di Docker, migliorare il testo della guida e semplificare l'uso di Docker. La vecchia sintassi dei comandi è ancora supportata, ma incoraggiamo tutti ad adottare la nuova sintassi .




docker rm container_name

docker rmi image_name

docker help

rm Rimuovere uno o più contenitori

rmi Rimuovi una o più immagini




finestra mobile rmi 91c95931e552

Error response from daemon: Conflict, cannot delete 91c95931e552 because the container 76068d66b290 is using it, use -f to force
FATA[0000] Error: failed to remove one or more images  

trova ID contenitore,

# docker ps -a

# docker rm  daf644660736 



Per rimuovere un'immagine dalla finestra mobile utilizzando l'Id immagine

  1. Ottieni l'elenco di tutte le immagini

    docker images
    
  2. Identificare l'id immagine dell'immagine che si desidera eliminare, ad esempio:

    REPOSITORY     TAG     IMAGE ID        CREATED        VIRTUAL SIZE
    kweku360/java  latest  08d3a9b8e166    2 weeks ago         5.733 GB`
    
  3. Infine rimuovi l'immagine usando l'id immagine (sono richieste solo le prime tre cifre)

    docker rmi 08d
    



se si desidera pulire automaticamente / periodicamente i contenitori usciti e rimuovere le immagini e i volumi non utilizzati da un contenitore funzionante, è possibile scaricare l'immagine meltwater / docker-cleanup.

Lo uso in produzione poiché distribuiamo più volte al giorno su più server e non voglio andare su tutti i server per effettuare la pulizia (sarebbe un problema).

Corri:

docker run -d -v /var/run/docker.sock:/var/run/docker.sock:rw  -v /var/lib/docker:/var/lib/docker:rw --restart=unless-stopped meltwater/docker-cleanup:latest

Verrà eseguito ogni 30 minuti (o comunque a lungo che lo imposti utilizzando l'opzione DELAY_TIME = 1800) e ripulisci contenitori e immagini.

Maggiori dettagli: https://github.com/meltwater/docker-cleanup/blob/master/README.md




IMMAGINI LISTA

ahanjura @ ubuntu: ~ $ sudo immagini docker

ID TAGLIO POSTERIORE ID IMMAGINE CREATO TAGLIA 88282f8eda00 19 secondi fa 308.5 MB 13e5d3d682f4 19 ore fa 663 MB busybox2 ultimo 05fe66bb1144 20 ore fa 1.129 MB ubuntu 16.04 00fd29ccc6f1 5 giorni fa 110.5 MB ubuntu 14.04 67759a80360c 5 giorni fa 221.4 MB python 2.7 9e92c8430ba0 7 giorni fa 680.7 MB busybox latest 6ad733544a63 6 settimane fa 1.129 MB ubuntu 16.10 7d3f705d307c 5 mesi fa 106.7 MB

ELIMINA IMMAGINE

ahanjura @ ubuntu: ~ $ sudo finestra mobile rmi 88282f8eda00 Eliminato: sha256: 88282f8eda0036f85b5652c44d158308c6f86895ef1345dfa788318e6ba31194 Eliminato: sha256: 4f211a991fb392cd794bc9ad8833149cd9400c5955958c4017b1e2dc415e25e9 Eliminato: sha256: 8cc6917ac7f0dcb74969ae7958fe80b4a4ea7b3223fc888dfe1aef42f43df6f8 Eliminato: sha256: b74a8932cff5e61c3fd2cc39de3c0989bdfd5c2e5f72b8f99f2807595f8ece43

ahanjura @ ubuntu: ~ $ sudo docker rmi 13e5d3d682f4 Risposta di errore da demone: conflitto: impossibile eliminare 13e5d3d682f4 (obbligatorio): l'immagine viene utilizzata dal contenitore interrotto 5593e25eb638

CANCELLARE PER FORZA

ahanjura @ ubuntu: ~ $ sudo finestra mobile rmi -f 13e5d3d682f4 Eliminato: sha256: 13e5d3d682f4de973780b35a3393c46eb314ef3db45d3ae83baf2dd9d702747e Deleted: sha256: 3ad9381c7041c03768ccd855ec86caa6bc0244223f10b0465c4898bdb21dc378 Eliminato: sha256: 5ccb917bce7bc8d3748eccf677d7b60dd101ed3e7fd2aedebd521735276606af Deleted: sha256: 18356d19b91f0abcc04496729c9a4c49e695dbfe3f0bb1c595f30a7d4d264ebf




Prima di tutto, dobbiamo fermare e rimuovere i contenitori docker che sono collegati con l'immagine della finestra mobile che stiamo per rimuovere.

Quindi per quello, prima

  • docker stop container-id - Per arrestare il contenitore in esecuzione
  • docker rm container-id - Per eliminare / rimuovere il contenitore

poi,

  • docker rmi image-id - Per eliminare / rimuovere l'immagine