2016-04-27 2 views
33

Es gibt einen Bereich von Diensten, die in docker-compose.yml definiert sind. Diese Dienste wurden gestartet. Ich muss nur einen von diesen neu erstellen und ohne andere Dienste starten. ich die folgenden Befehle:Wie Docker-Container in docker-compose.yml neu erstellen?

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 

Am Ende bekam ich alt nginx Container. Übrigens tötet docker-compose nicht alle laufenden Container!

Antwort

16

Dieses Ihr Problem beheben sollte:

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

Wenn Sie alle Container "stoppen" und 'rm' möchten, können Sie den Befehl' docker-compose down' verwenden. Ihre Lösung ist besser, wenn Sie nur einige loswerden wollen. – hirowatari

1

Das Problem ist:

$ docker-compose stop nginx 

nicht funktionierte (sagte man es noch läuft). Wenn Sie es sowieso neu erstellen, können Sie es versuchen zu töten:

$ docker-compose kill nginx 

Wenn es immer noch nicht funktioniert, versuchen Sie es direkt mit Docker zu stoppen:

$ docker stop nginx 

oder löschen

Wenn das immer noch nicht funktioniert, überprüfen Sie Ihre Version von Docker, möchten Sie möglicherweise aktualisieren.

Es könnte ein Fehler sein, Sie könnten prüfen, ob einer zu Ihrem System/Version passt. Hier sind ein paar, für die Ex: https://github.com/docker/docker/issues/10589

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

Als Abhilfe können, können Sie versuchen, den Prozess zu töten.

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

Nur:

$ docker-compose restart [yml_service_name] 
+1

Dies wird keine neuen Änderungen erstellen. aus dem Handbuch - Wenn Sie Änderungen an Ihrer docker-compose.yml-Konfiguration vornehmen, werden diese Änderungen nach Ausführung dieses Befehls nicht angezeigt. – denov

48

docker-compose up

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

--no-deps - nicht verknüpfte Dienste starten.

--build - Bilder vor dem Start von Containern erstellen.

+2

'docker-compose build service1 service2 --no-cache' erledigt diesen Job besser (https://github.com/docker/compose/issues/1049). Ich hatte Probleme mit zwischengespeicherten Containern, die vor der Verwendung von erstellt wurden 'docker-compose up -d - no-deps --build ' – evgpisarchik

Verwandte Themen