2013-06-09 23 views
115

Ogni comando docker run o ogni comando RUN all'interno di un file Docker crea un contenitore. Se il contenitore non è più in esecuzione può ancora essere visto con docker ps -a.Dovrei essere preoccupato per i contenitori Docker in eccesso, non in esecuzione?

Dovrei preoccuparmi di avere un elenco enorme di contenitori non funzionanti? Devo emettere docker rm su container non funzionanti?

Non sono sicuro di quali siano le prestazioni o le penalità di memoria/stoccaggio di questi contenitori non funzionanti.

+1

Un comando 'docker exec' è stato aggiunto qualche tempo fa, vedere https://docs.docker.com/reference/commandline/cli/#exec - eseguirà un comando da un contenitore in esecuzione. – schmunk

+0

Cordiali saluti, se vuoi vedere come rimuovere vecchi contenitori, vedi questa domanda: http://stackoverflow.com/questions/17236796/how-to-remove-old-docker-containers/29474367 –

+1

@schmunk Il link è stato spostato . https://docs.docker.com/engine/reference/commandline/exec/ – akauppi

risposta

56

I contenitori che non sono in esecuzione non stanno prendendo risorse di sistema oltre allo spazio su disco.

Di solito è bene ripulire da soli, ma se ce ne sono molti seduti attorno non dovrebbe rallentare le prestazioni.

Se si nota un rallentamento durante l'esecuzione di comandi di finestra mobile con molti contenitori bloccati, potrebbe trattarsi di un errore nella finestra mobile e si dovrebbe inviare un bug.

+1

I documenti per il comando 'RUN' si sono ora spostati in: http://docs.docker.io/en/latest/reference/builder/ #run – aculich

59

Il docker run documentation descrive come pulire automaticamente il contenitore e rimuovere il file system quando si chiude il contenitore:

--rm=false: Automatically remove the container when it exits (incompatible with -d) 

Quanto sopra dimostra che per default contenitori non sono rimossi, ma aggiungendo --rm=true o solo nel breve mano --rm funziona in questo modo:

sudo docker run -i -t --rm ubuntu /bin/bash 

Quando si esce dal contenitore verrà rimosso automaticamente.

È possibile verificare questo elencando i vostri contenitori docker in una finestra di terminale:

watch -n1 'sudo ls -c /var/lib/docker/containers' 

E poi in un'altra finestra Esegui questo comando per eseguire più contenitori docker che verrà uscita tutto in automatico dopo aver dormito per un massimo di 10 secondi .

for i in {1..10}; do sudo docker run --rm ubuntu /bin/sleep $i & done 
+3

Non una risposta diretta alla * domanda *, ma una risposta interessante che fornirà agli utenti alcuni dettagli sui meccanismi alla base della finestra mobile. Grazie! – thaJeztah

+3

'-rm' è deprecato e verrà rimosso in qualche momento, usare' --rm'. – bain

+1

"' -rm' "è già stato rimosso – Vanuan

5

Se si esegue un contenitore con un volume e non si utilizza finestra mobile rm -v per rimuoverlo allora il volume non viene rimosso dopo la rimozione di un contenitore. Inoltre c'è un issue con un driver di archiviazione vfs. Se ti dimentichi di pulire, i volumi mangeranno il tuo spazio su disco.

Problemi correlati