L'uso della --restart=alwayspolitica gestirà il riavvio dei contenitori esistenti in caso di riavvio.
Il problema è che se ci sono più contenitori con --restart=alwaysquando si esegue l'immagine di una versione più recente come discusso nella finestra mobile - come si disabilita il riavvio automatico su un contenitore? .
Cercare di rimuovere automaticamente il contenitore quando esiste tramite l'opzione put docker run --rmcreerà problemi con la --restart=always
politica poiché sono in conflitto tra loro .
$ docker run --rm --restart always <image>
Conflicting options: --restart and --rm
Quindi in questo caso è meglio scegliere un'altra opzione: --restart a meno che la politica non venga interrotta .
$ docker run --rm --restart unless-stopped <image>
Questa politica non sarà in conflitto la docker run --rmma come spiegato nella documentazione di finestra mobile :
È simile a --restart=always, tranne che quando il contenitore viene arrestato (manualmente o in altro modo) , non viene riavviato anche dopo il riavvio del daemon Docker.
Quindi, quando si utilizza questa --restart unless-stoppedpolitica, per assicurarsi che il riavvio funzioni nel caso in cui si interrompa per errore quando si chiude il terminale, fare una volta in un altro terminale come di seguito:
$ docker ps
$ docker restart <container>
Attendi il termine del processo di uccisione nella shell precedente, quindi chiudilo e lascialo ( non uscire ).
E ricontrolla nel terminale rimasto se il contenitore è ancora in esecuzione:
$ docker ps
Se è ancora in esecuzione, è possibile riavviare in modo sicuro e verificare nuovamente che l'applicazione si riavvii e vedere che la finestra mobile è pulita senza inutilizzare più contenitori.