androide

Come rimuovere contenitori, immagini, volumi e reti docker

Azure Friday | Azure Container Registry Geo-replication

Azure Friday | Azure Container Registry Geo-replication

Sommario:

Anonim

Docker consente di creare, testare e distribuire rapidamente applicazioni come contenitori portatili e autosufficienti che possono essere eseguiti praticamente ovunque.

Docker non rimuove oggetti inutilizzati come contenitori, immagini, volumi e reti a meno che non gli venga esplicitamente indicato di farlo. Mentre lavori con Docker, puoi facilmente accumulare un gran numero di oggetti inutilizzati che consumano spazio su disco significativo e ingombrano l'output prodotto dai comandi Docker.

Questa guida funge da "cheat sheet" per aiutare gli utenti Docker a organizzare il proprio sistema e liberare spazio su disco rimuovendo contenitori, immagini, volumi e reti Docker non utilizzati.

Rimozione di tutti gli oggetti non utilizzati

Il comando di eliminazione del docker system prune rimuoverà tutti i contenitori arrestati, tutte le immagini sospese e tutte le reti inutilizzate:

docker system prune

Ti verrà richiesto di continuare, usa il flag -f o --force per bypassare il prompt.

WARNING! This will remove: - all stopped containers - all networks not used by at least one container - all dangling images - all build cache Are you sure you want to continue?

docker system prune --volumes

WARNING! This will remove: - all stopped containers - all networks not used by at least one container - all volumes not used by at least one container - all dangling images - all build cache Are you sure you want to continue? y

Rimozione dei contenitori Docker

I contenitori Docker non vengono rimossi automaticamente quando li si interrompe a meno che non si avvii il contenitore utilizzando il flag --rm .

Rimuovere uno o più contenitori

Per rimuovere una o più immagini Docker, utilizzare il comando docker container rm seguito dall'ID dei contenitori che si desidera rimuovere.

È possibile ottenere un elenco di tutti i contenitori passando il flag -a al comando docker container ls :

docker container ls -a

L'output dovrebbe assomigliare a questo:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cc3f2ff51cab centos "/bin/bash" 2 months ago Created competent_nightingale cd20b396a061 solita/ubuntu-systemd "/bin/bash -c 'exec …" 2 months ago Exited (137) 2 months ago systemd fb62432cf3c1 ubuntu "/bin/bash" 3 months ago Exited (130) 3 months ago jolly_mirzakhani

Una volta che conosci l' CONTAINER ID dei contenitori che desideri eliminare, docker container rm comando docker container rm . Ad esempio, per rimuovere i primi due contenitori elencati nell'output sopra eseguito:

docker container rm cc3f2ff51cab cd20b396a061

Error response from daemon: You cannot remove a running container fc983ebf4771d42a8bd0029df061cb74dc12cb174530b2036987575b83442b47. Stop the container before attempting removal or force remove.

Rimuovere tutti i contenitori fermi

Prima di eseguire il comando di rimozione, è possibile ottenere un elenco di tutti i contenitori non in esecuzione (arrestati) che verranno rimossi utilizzando il comando seguente:

docker container ls -a --filter status=exited --filter status=created

Per rimuovere tutti i contenitori arrestati, utilizzare il comando di eliminazione del contenitore della docker container prune :

docker container prune

Ti verrà richiesto di continuare, usa il flag -f o --force per bypassare il prompt.

WARNING! This will remove all stopped containers. Are you sure you want to continue? y

Rimuovere i contenitori utilizzando i filtri

Il comando di eliminazione del contenitore della docker container prune consente di rimuovere i contenitori in base alla condizione utilizzando il flag di filtro --filter .

Al momento della stesura di questo articolo, i filtri attualmente supportati sono until e l' label . Puoi usare più di un filtro usando più flag --filter .

Ad esempio, per rimuovere tutte le immagini create più di 12 ore fa, eseguire:

docker container prune --filter "until=12h"

Arrestare e rimuovere tutti i contenitori

È possibile ottenere un elenco di tutti i contenitori Docker sul proprio sistema usando il comando docker container ls -aq .

Per interrompere tutti i contenitori in esecuzione, utilizzare il comando di docker container stop della docker container stop seguito da un elenco di tutti gli ID dei contenitori.

docker container stop $(docker container ls -aq)

Una volta arrestati tutti i contenitori, è possibile rimuoverli utilizzando il comando docker container rm seguito dall'elenco ID contenitori.

docker container rm $(docker container ls -aq)

Rimozione delle immagini Docker

Rimuovi una o più immagini

Per rimuovere una o più immagini Docker, utilizzare il comando docker images ls per trovare l'ID delle immagini che si desidera rimuovere.

docker image ls

L'output dovrebbe assomigliare a questo:

REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 75835a67d134 7 days ago 200MB ubuntu latest 2a4cca5ac898 2 months ago 111MB linuxize/fedora latest a45d6dca3361 3 months ago 311MB java 8-jre e44d62cf8862 3 months ago 311MB

Una volta individuate le immagini che si desidera rimuovere, passare il loro IMAGE ID al comando docker image rm . Ad esempio, per rimuovere le prime due immagini elencate nell'output sopra eseguito:

docker image rm 75835a67d134 2a4cca5ac898

Error response from daemon: conflict: unable to remove repository reference "centos" (must force) - container cd20b396a061 is using its referenced image 75835a67d134

Rimuovi immagini penzolanti

Docker fornisce un comando di eliminazione delle docker image prune che può essere utilizzato per rimuovere le immagini appese e non utilizzate.

Un'immagine penzolante è un'immagine che non è taggata e non viene utilizzata da nessun contenitore. Per rimuovere le immagini pendenti digitare:

docker image prune

Ti verrà richiesto di continuare, usa il flag -f o --force per bypassare il prompt.

WARNING! This will remove all dangling images. Are you sure you want to continue? y Quando si rimuovono le immagini pendenti, se le immagini create dall'utente non vengono taggate, verranno rimosse anche.

Rimuovi tutte le immagini non utilizzate

Per rimuovere tutte le immagini a cui non fa riferimento alcun contenitore esistente, non solo quelle pendenti, utilizzare il comando prune con il flag -a :

docker image prune -a

WARNING! This will remove all images without at least one container associated to them. Are you sure you want to continue? y

Rimuovi le immagini usando i filtri

Con il comando docker image prune , puoi anche rimuovere le immagini in base a una determinata condizione usando il flag di filtro --filter .

Al momento della stesura di questo articolo, i filtri attualmente supportati sono until e l' label . Puoi usare più di un filtro usando più flag --filter .

Ad esempio, per rimuovere tutte le immagini create più di 12 ore fa, eseguire:

docker image prune -a --filter "until=12h"

Rimozione dei volumi Docker

Rimuovere uno o più volumi

Per rimuovere uno o più volumi Docker, utilizzare il comando Docker docker volume ls per trovare l'ID dei volumi che si desidera rimuovere.

docker volume ls

L'output dovrebbe assomigliare a questo:

DRIVER VOLUME NAME local 4e12af8913af888ba67243dec78419bf18adddc3c7a4b2345754b6db64293163 local terano

Una volta trovato il VOLUME NAME dei volumi che si desidera rimuovere, passarli al comando docker volume rm . Ad esempio, per rimuovere il primo volume elencato nell'output sopra, eseguire:

docker volume rm 4e12af8913af888ba67243dec78419bf18adddc3c7a4b2345754b6db64293163

Error response from daemon: remove 4e12af8913af888ba67243dec78419bf18adddc3c7a4b2345754b6db64293163: volume is in use -

Rimuovi tutti i volumi non utilizzati

Per rimuovere tutti i volumi non utilizzati, utilizzare il comando di eliminazione docker image prune della docker image prune :

docker volume prune

Ti verrà richiesto di continuare, usa il flag -f o --force per bypassare il prompt.

WARNING! This will remove all local volumes not used by at least one container. Are you sure you want to continue?

Rimozione di reti Docker

Rimuovi una o più reti

Per rimuovere una o più reti Docker utilizzare il comando docker network ls per trovare l'ID delle reti che si desidera rimuovere.

docker network ls

L'output dovrebbe assomigliare a questo:

NETWORK ID NAME DRIVER SCOPE 107b8ac977e3 bridge bridge local ab998267377d host host local c520032c3d31 my-bridge-network bridge local 9bc81b63f740 none null local

Una volta individuate le reti che si desidera rimuovere, passare il loro NETWORK ID al comando docker network rm . Ad esempio per rimuovere la rete con il nome my-bridge-network run:

docker network rm c520032c3d31

Error response from daemon: network my-bridge-network id 6f5293268bb91ad2498b38b0bca970083af87237784017be24ea208d2233c5aa has active endpoints

Rimuovi tutta la rete non utilizzata

Utilizzare il comando di eliminazione della docker network prune per rimuovere tutte le reti non utilizzate.

docker network prune

Ti verrà richiesto di continuare, usa il flag -f o --force per bypassare il prompt.

WARNING! This will remove all networks not used by at least one container. Are you sure you want to continue?

Rimuovi le reti usando i filtri

Con il comando di eliminazione della docker network prune è possibile rimuovere le reti in base alle condizioni utilizzando il flag di filtro --filter .

Al momento della stesura di questo articolo, i filtri attualmente supportati sono until e l' label . Puoi usare più di un filtro usando più flag --filter .

Ad esempio, per rimuovere tutte le reti create più di 12 ore fa, eseguire:

docker network prune -a --filter "until=12h"

Conclusione

In questa guida, ti abbiamo mostrato alcuni dei comandi più comuni per la rimozione di contenitori, immagini, volumi e reti Docker.

Dovresti anche consultare la documentazione ufficiale di Docker.

scaricatore di porto