Come continuare un contenitore Docker che è uscito

Prendere in considerazione:

docker run -it centos /bin/bash 

Ho premuto Ctrl + D per uscire.

Voglio continuare a gestire questo contenitore, ma ho scoperto che non posso.

L’unico metodo è

 docker commit `docker ps -q -l` my_image docker run -it my_image /bin/bash 

Ho ragione? C’è un metodo migliore? (Sto usando la finestra mobile 0.8.0.)

È ansible riavviare un contenitore esistente dopo che è terminato e le modifiche sono ancora presenti.

 docker start `docker ps -q -l` # restart it in the background docker attach `docker ps -q -l` # reattach the terminal & stdin 
 docker start -a -i `docker ps -q -l` 

Spiegazione:

docker start avvio di un contenitore (richiede nome o ID)
-a allegato al contenitore
-i modalità intertriggers
docker ps Elenco contenitori
-q elenca solo gli ID contenitore
-l elenca solo l’ultimo contenitore creato

Uso:

 docker start $(docker ps -a -q --filter "status=exited") 

Ciò avvierà tutti i contenitori che si trovano nello stato di uscita.

 docker exec -it  /bin/bash 

Questo si connetterà al contenitore particolare.

Se si desidera continuare esattamente un contenitore Docker con un nome noto:

 docker start `docker ps -a -q --filter "name=elas"` 

Se si dispone di un contenitore denominato, può essere avviato eseguendo

 docker container start container_name 

dove nome_contenitore è il nome del contenitore che deve essere assegnato al momento della creazione del contenitore. È ansible sostituire container_name con l’id contenitore nel caso in cui il contenitore non sia denominato. L’ID contenitore può essere trovato eseguendo:

 docker ps -a 

Se vuoi farlo in più comandi facili da ricordare:

  1. elenca i contenitori fermati:

docker ps -a

  1. copia il nome o l’id contenitore del contenitore a cui vuoi colbind e avvia il contenitore con:

docker start -i

L’indicatore -i indica alla finestra mobile di collegarsi allo stdin del contenitore.

Se il contenitore non è stato avviato con una shell intertriggers a cui connettersi, è necessario eseguire questa operazione per eseguire una shell:

 docker start  docker exec -it  /bin/sh 

Il /bin/sh è la shell solitamente disponibile con le immagini alpine.