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?
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:
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 up
comando aggrega l'output di ogni contenitore (essenzialmente in esecuzionedocker-compose logs -f
). Quando il comando termina, tutti i contenitori vengono arrestati. L'esecuzionedocker-compose up -d
avvia 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 up
riprende le modifiche arrestando e ricreando i contenitori (preservando i volumi montati). Per impedire a Compose di rilevare le modifiche, utilizzare il--no-recreate
flag.
Per il riferimento completo alla CLI:
https://docs.docker.com/compose/reference/
Nella finestra mobile Domande frequenti questo è spiegato molto chiaramente:
Qual è la differenza tra up, run e start?
In genere, vuoi
docker-compose up
. Utilizzareup
per avviare o riavviare tutti i servizi definiti in un filedocker-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 run
comando 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. Utilizzarerun
per eseguire test o eseguire un'attività amministrativa come la rimozione o l'aggiunta di dati a un contenitore di volumi di dati. Ilrun
comando si comporta comedocker run -ti
se aprisse un terminale interattivo al contenitore e restituisse uno stato di uscita corrispondente allo stato di uscita del processo nel contenitore.Il
docker-compose start
comando è utile solo per riavviare contenitori che erano stati precedentemente creati, ma erano stati arrestati. Non crea mai nuovi contenitori.