2016-04-27 11 views
33

Esiste una gamma di servizi definiti in docker-compose.yml. Questi servizi sono stati avviati. Devo ricostruire solo uno di questi e avviarlo senza altri servizi. Corro i seguenti comandi:Come ricostruire il contenitore docker in docker-compose.yml?

docker-compose up -d # run all services 
docker-compose stop nginx # stop only one. but it still running !!! 
docker-compose build --no-cache nginx 
docker-compose up -d --no-deps # link nginx to other services 

Alla fine ho ottenuto vecchio contenitore nginx. A proposito, la composizione di docker non uccide tutti i contenitori in esecuzione!

risposta

16

Questo dovrebbe risolvere il problema:

docker-compose ps # lists all services (id, name) 
docker-compose stop <id/name> #this will stop only the selected container 
docker-compose rm <id/name> # this will remove the docker container permanently 
docker-compose up # builds/rebuilds all not already built container 
+3

se si desidera 'stop' e' rm' tutti i contenitori, è possibile utilizzare il comando 'docker-compose down'. La tua soluzione è migliore se vuoi liberarti di qualcuno. – hirowatari

1

Il problema è:

$ docker-compose stop nginx 

non ha funzionato (lei ha detto che è ancora in esecuzione). Se avete intenzione di ricostruire in ogni caso, si può provare uccidendolo:

$ docker-compose kill nginx 

Se ancora non funziona, cercare di fermarlo con finestra mobile direttamente:

$ docker stop nginx 

o eliminarlo

$ docker rm -f nginx 

Se il problema persiste, controllare la versione della finestra mobile, è possibile eseguire l'aggiornamento.

Potrebbe trattarsi di un bug, è possibile verificare se uno corrisponde al sistema/versione. Qui ci sono un paio, per es: https://github.com/docker/docker/issues/10589

https://github.com/docker/docker/issues/12738

Per risolvere il problema, si potrebbe tentare di uccidere il processo.

$ ps aux | grep docker 
$ kill 225654 # example process id 
-3

Solo:

$ docker-compose restart [yml_service_name] 
+1

questo non creerà nuove modifiche. dal manuale: se apporti modifiche alla configurazione di docker-compose.yml, queste modifiche non verranno applicate dopo l'esecuzione di questo comando. – denov

48

docker-compose up

$docker-compose up -d --no-deps --build <service_name> 

--no-dipendenze - Non avviare i servizi connessi.

--build - Crea immagini prima di avviare i contenitori.

+2

'docker-compose build service1 service2 --no-cache' fa meglio questo lavoro (https://github.com/docker/compose/issues/1049). Ho riscontrato un problema con i contenitori memorizzati nella cache prima dell'uso di 'docker-compose up -d --no-deps --build ' – evgpisarchik