2016-04-27 14 views
33

Istnieje zakres usług zdefiniowanych w docker-compose.yml. Usługi te zostały uruchomione. Muszę odbudować tylko jedną z nich i uruchomić ją bez innych usług. uruchomić następujące polecenia:Jak odbudować kontener dokera w 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 

Na koniec mam starą nginx pojemnik. Przy okazji, funkcja dokowania nie zabija wszystkich uruchomionych pojemników!

Odpowiedz

16

To powinno rozwiązać problem:

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

Jeśli chcesz "stop" i "rm' wszystkie kontenery, możesz użyć polecenia' docker-compose down'. Twoje rozwiązanie jest lepsze, jeśli chcesz się ich pozbyć. – hirowatari

1

Problemem jest:

$ docker-compose stop nginx 

nie działa (mówiłeś, że nadal działa). Jeśli masz zamiar odbudować go w każdym razie, można spróbować zabijając go:

$ docker-compose kill nginx 

Jeśli nadal nie działa, spróbuj zatrzymać go dokowanym bezpośrednio:

$ docker stop nginx 

lub usunąć

$ docker rm -f nginx 

Jeśli to nadal nie działa, sprawdź swoją wersję okna dokowanego, możesz dokonać aktualizacji.

To może być błąd, możesz sprawdzić, czy pasuje do twojego systemu/wersji. Oto kilka, dla ex: https://github.com/docker/docker/issues/10589

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

Jako obejście, można próbować zabić proces.

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

tylko:

$ docker-compose restart [yml_service_name] 
+1

nie spowoduje to nowych zmian. z instrukcji - jeśli wprowadzisz zmiany w konfiguracji docker-compose.yml, zmiany te nie zostaną odzwierciedlone po uruchomieniu tego polecenia. – denov

48

docker-compose up

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

--no-deps - Nie zaczynaj powiązanych usług.

--build - Buduj obrazy przed uruchomieniem pojemników.

+2

'docker-compose build service1 service2 --no-cache' robi to lepiej (https://github.com/docker/compose/issues/1049). Mam problem z buforowanymi kontenerami, które zostały utworzone przed użyciem 'docker-compose up -d --no-deps --build ' – evgpisarchik

Powiązane problemy