Qual è la differenza tra docker-compose up e docker-compose start?


124

Ogni volta che eseguo

docker-compose start 
docker-compose ps

Vedo i miei contenitori con lo stato "UP". Se lo faccio

docker-compose up -d

Vedrò più verboso ma avrà lo stesso stato. C'è qualche differenza tra i due comandi?

Risposte:


166

docker-compose start
( https://docs.docker.com/compose/reference/start/ )

Avvia i contenitori esistenti per un servizio.

docker-compose up
( https://docs.docker.com/compose/reference/up/ )

Compila, (ri) crea, avvia e si collega ai contenitori per un servizio.

A meno che non siano già in esecuzione, questo comando avvia anche tutti i servizi collegati.

Il docker-compose upcomando aggrega l'output di ogni contenitore (essenzialmente in esecuzione docker-compose logs -f). Quando il comando termina, tutti i contenitori vengono arrestati. L'esecuzione docker-compose up -davvia i contenitori in background e li lascia in esecuzione.

Se esistono contenitori esistenti per un servizio e la configurazione o l'immagine del servizio è stata modificata dopo la creazione del contenitore, docker-compose upriprende le modifiche arrestando e ricreando i contenitori (preservando i volumi montati). Per impedire a Compose di rilevare le modifiche, utilizzare il --no-recreateflag.

Per il riferimento completo alla CLI:
https://docs.docker.com/compose/reference/


3
collegamento aggiornato al riferimento CLI docker -compose: docs.docker.com/compose/reference * docker -compose up: docs.docker.com/compose/reference/up * docker -compose start: docs.docker.com/compose/reference / inizio
michael

18

Nella finestra mobile Domande frequenti questo è spiegato molto chiaramente:

Qual è la differenza tra up, run e start?

In genere, vuoi docker-compose up. Utilizzare upper avviare o riavviare tutti i servizi definiti in un file docker-compose.yml. Nella modalità "allegata" predefinita, vengono visualizzati tutti i registri di tutti i contenitori. In modalità "disconnessa" ( -d), Compose esce dopo l'avvio dei contenitori, ma i contenitori continuano a essere eseguiti in background.

Il docker-compose runcomando serve per eseguire attività "una tantum" o "ad hoc". Richiede il nome del servizio che si desidera eseguire e avvia i contenitori solo per i servizi da cui dipende il servizio in esecuzione. Utilizzare run per eseguire test o eseguire un'attività amministrativa come la rimozione o l'aggiunta di dati a un contenitore di volumi di dati. Il runcomando si comporta come docker run -tise aprisse un terminale interattivo al contenitore e restituisse uno stato di uscita corrispondente allo stato di uscita del processo nel contenitore.

Il docker-compose startcomando è utile solo per riavviare contenitori che erano stati precedentemente creati, ma erano stati arrestati. Non crea mai nuovi contenitori.


in che modo il comando di riavvio è diverso da uno di questi: esegui, avvia, su?
Nag
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.