2016-04-27 8 views
33

docker-compose.ymlで定義されているサービスの範囲があります。これらのサービスは開始されました。私はこれらのうちの1つだけを再構築し、他のサービスを使わずに起動する必要があります。 私は次のコマンドを実行します。終わりに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 

を私は古いnginxのコンテナを得ました。 ところで、ドッカーの作成は実行中のすべてのコンテナを殺すことはありません!

答えて

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

すべてのコンテナを '停止し' rmする場合は 'docker-compose down'コマンドを使用できます。あなたが解決したいのは、いくつかを取り除きたいならば、あなたの解決策はより良いです。 – hirowatari

1

問題がある:

$ docker-compose stop nginx 

は(あなたはそれがまだ実行されていると述べた)動作しませんでした。あなたはとにかくそれを再構築しようとしている場合、あなたはそれを殺す試すことができます。

$ docker-compose kill nginx 

それはまだ動作しない場合は、直接ドッキングウィンドウでそれを停止しよう:

$ docker stop nginx 

またはそれに

を削除します
$ docker rm -f nginx 

まだ動作しない場合は、ドッカーのバージョンを確認してください。アップグレードすることをお勧めします。

バグの可能性があります。システム/バージョンに一致するかどうかを確認できます。ここでカップルは、元のためにされています。回避策として https://github.com/docker/docker/issues/10589

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

、あなたはプロセスを強制終了しようとすることができます。

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

のみ:--no-depsの

$ docker-compose restart [yml_service_name] 
+1

これは新しい変更を構築しません。マニュアルから - docker-compose.yml設定を変更した場合、これらの変更はこのコマンドの実行後に反映されません。 – denov

48

docker-compose up

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

- リンクサービスを開始しないでください。

- ビルド - コンテナを開始する前にイメージをビルドします。

+2

'docker-compose build service1 service2 --no-cache'はこの仕事をより良くします(https://github.com/docker/compose/issues/1049)。 'docker-up -d --no-deps --build 'を使用する前に構築されたキャッシュされたコンテナに問題がありました。 – evgpisarchik

関連する問題