finestra mobile - come si disabilita il riavvio automatico su un contenitore?


157

Posso abilitare il riavvio automatico con --restart=always, ma dopo aver arrestato il contenitore, come posso disattivare quell'attributo?

Normalmente eseguo un server web e in genere mappa la porta 80:

docker run -d --restart=always -p 80:80 -i -t myuser/myproj /bin/bash

Ma ci sono momenti in cui voglio eseguire una versione più recente della mia immagine, ma voglio mantenere il vecchio contenitore in giro. Il problema è che se ci sono più contenitori con --restart=always, solo uno di essi (casuale?) Si avvia perché tutti contendono la porta 80 sull'host.

Risposte:


329

È possibile utilizzare l' --restart=unless-stoppedopzione, come indicato da @Shibashis, o aggiornare la politica di riavvio (ciò richiede la finestra mobile 1.11 o successiva);

Vedere la documentazione perdocker update e politiche riavvio Docker .

docker update --restart=no my-container

che aggiorna la politica di riavvio per un contenitore esistente ( my-container)


69
Utilizzare docker update --restart=no $(docker ps -a -q)per aggiornare tutti i contenitori :-)
Mark Mooibroek,

33

Puoi iniziare il tuo contenitore con --restart=unless-stopped.


23

Utilizzare quanto segue per disabilitare TUTTI i contenitori di riavvio automatico (daemon).

docker update --restart=no $(docker ps -a -q)

Utilizzare quanto segue per disabilitare il riavvio di un contenitore SINGOLO.

docker update --restart=no the-container-you-want-to-disable-restart

Razionale :

Docker fornisce criteri di riavvio per controllare se i contenitori si avviano automaticamente all'uscita o al riavvio di Docker. Questo è spesso molto utile quando Docker esegue un servizio chiave.

Appunti

Se stai usando la finestra mobile componi questo può essere utile sapere.

restart no è il criterio di riavvio predefinito e non riavvia un contenitore in nessuna circostanza. Quando viene sempre specificato, il contenitore si riavvia sempre. La politica in caso di errore riavvia un contenitore se il codice di uscita indica un errore in caso di errore.

restart: "no"
restart: always
restart: on-failure
restart: unless-stopped

restart: always

12

Se si dispone di uno sciame che riavvia i contenitori, lo sciame riavvierà tutti i contenitori arrestati o rm, indipendentemente dall'opzione di riavvio. Questa è una caratteristica, non un bug.

Assicurati di non eseguire un servizio di cui ti sei dimenticato:

docker service ls

Quindi, è possibile interrompere il servizio

docker service rm <service id discovered with previous command>

1
lsrisulta in erroreError response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.
naXa
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.