2015-09-27 7 views
5

Ho appena iniziato a utilizzare Docker e mi piace moltissimo, ma ho un grosso flusso di lavoro che mi piacerebbe ottimizzare. Quando eseguo l'iterazione sullo script Dockerfile verificherò spesso le cose dopo una build avviando una sessione bash , eseguendo alcuni comandi, scoprendo che tale e tale pacchetto non sono stati installati correttamente, quindi indietro e aggiustando il mio Dockerfile.come "eseguire la finestra mobile" una sessione di shell su un'installazione linux minima e distruggere immediatamente il contenitore?

Diciamo che ho costruito la mia immagine e contrassegnati come buildfoo, mi piacerebbe correre piace questo:

 $> docker run -t -i buildfoo 

       ... enter some bash commands.. then ^D to exit 

allora avrò un contenitore in esecuzione che devo pulire. Di solito ho appena Nuke tutto in questo modo:

docker rm --force `docker ps -qa` 

Questo funziona bene per me .. Comunque, preferirei non essere necessario rimuovere manualmente il contenitore .

Qualsiasi suggerimento accettato con gratitudine!


qualche ulteriore Minor Details:

immagine minimal CentOS 7 in esecuzione e utilizzando bash come il mio guscio.

risposta

10

Utilizzare il flag -rm per il comando di esecuzione della finestra mobile. --rm=true o solo --rm.

Rimuove automaticamente il contenitore quando esce (incompatibile con -d). Esempio:

docker run -i -t --rm=true centos /bin/bash 

o

docker run -i -t --rm centos /bin/bash 
+2

Sei sicuro che è '--rm = false'? –

+0

ha aggiornato correttamente la risposta. grazie per aver segnalato @Renaud Pacalet – spectre007

+0

che funziona! Grazie –

1

Io uso the alias dr

alias dr='docker run -it --rm' 

Che ti dà:

dr myimage 
ls 
... 
exit 

Non più contenitore in esecuzione.

2

Anche se quanto sopra ancora funziona, il comando di seguito si avvale di nuova sintassi di Docker

docker container run -it --rm centos bash