2016-04-27 189 views
33

在docker-compose.yml中定義了服務的範圍。這些服務已經開始。我需要重建其中的一個,並啓動它,而不用其他服務。 我運行以下命令:如何在docker-compose.yml中重建docker容器?

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 

最後我得到了老nginx的容器。 順便說一句docker-compose不會殺死所有正在運行的容器!

回答

16

這應該可以解決你的問題:

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

如果你想'stop'和'rm'所有容器,那麼你可以使用命令'docker-compose down'。如果你只想擺脫一些,你的解決方案會更好。 – hirowatari

1

的問題是:

$ docker-compose stop nginx 

沒有工作(你說的仍在運行)。如果你打算無論如何要重建它,你可以嘗試殺死它:

$ docker-compose kill nginx 

如果還是不行,請嘗試直接與碼頭工人停止它:

$ docker stop nginx 

或刪除其

$ docker rm -f nginx 

如果仍然不起作用,請檢查您的docker版本,您可能需要升級。

這可能是一個錯誤,你可以檢查一個是否符合你的系統/版本。這裏有一對夫婦,爲前: https://github.com/docker/docker/issues/10589

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

作爲一種變通方法,您可以嘗試殺死進程。

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

只有:

$ docker-compose restart [yml_service_name] 
+1

這不會構建新的更改。從手冊 - 如果您對docker-compose.yml配置進行了更改,那麼在運行此命令後,這些更改將不會反映出來。 – denov

48

docker-compose up

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

--no-DEPS - 不啓動鏈接服務。

--build - 在啓動容器之前構建圖像。

+2

'docker-compose build service1 service2 --no-cache'更好地完成這項工作(https://github.com/docker/compose/issues/1049)。 我在使用之前構建的緩存容器問題 'docker-compose up -d --no-deps --build evgpisarchik

相關問題