2016-09-22 7 views
1

CoreOS(ホスト)でDockerコンテナを実行していて、コンテナのフォルダがあるホストフォルダがマウントされています。今ホストフォルダの内容が変更されたときのDockerコンテナの自動再起動

docker run -v /home/core/folder_name:/folder_name <container_name> 

、私はそのホストフォルダ(folder_name)でいくつかのファイルを(insert/delete)を変更していますたびに、私は効果を見るために、コンテナ(container_name)を再起動する必要があります。

docker restart <container_name> 

フォルダの変更(insert/delete)があるときに、自動的にそれを再起動するホスト側またはドッキングウィンドウ側からどのような方法はありますか?

答えて

2

フォルダの変更時にドッカーコンテナを再起動することは、まず最初に-vコマンドの全体概念とは対照的です。あなたが本当に本当に本当に本当に本当に本当に必要な場合は、それを行う唯一の方法は、ドッカーのホストからです示唆している方法でコンテナを再起動する必要があります。あなたがホストフォルダを監視するのに使うことができ、ファイルが挿入または削除されたときにdocker restart <container_name>コマンドをトリガーすることができるツールがいくつかあります(私の頭の上から名前を付けることができます。これらのツールはincroninotify-toolsです。 Hereはあなたのものに類似した質問をしてくれました。

これで、ホストフォルダ内のファイルがドッカーのコンテナで変更されていないことはありません。ドッカーコンテナで使用しているプログラムが、起動後に/folder_nameフォルダのビューを更新していないことが必要です。ドッカーコンテナで実行しているプログラムを強制的に更新または更新することは可能ですか? -vコマンドはバインドマウントを介して動作し、しばらくの間ドッカーの安定した機能となっています。バインドマウントの場合、home/core/folder_nameフォルダーは、すべての実用的な目的のために、コンテナー内の/folder_nameと同じフォルダーです。

このコマンドはあなたに、コンテナ内の対話型シェルを与える

docker run -t -i -v /home/core/folder_name:/folder_name <container_name> /bin/sh

コマンドを実行します。

cd /folder_name; touch a_file

今すぐシェルまたはいくつかのファイルブラウザでのドッキングウィンドウのホスト上の/ home /コア/フォルダ名に移動します。このシェルでコマンドを発行します。ファイルa_fileが表示されます。ホスト上のそのファイルを削除し、ドッカーコンテナで実行中のシェルに戻り、ls /folder_nameを実行することができます。ファイルa_fileは存在しません。

したがって、ホスト上でファイルが変更されるたびに、コンテナを再起動するためには、inotifyまたはincronを使用するか、ドッカーコンテナで実行しているプログラムで作業してビューを更新する方法を理解する必要があります/folder_nameフォルダーの。

+0

私はあなたの意見を持っています。もう一つの問題は、coreosにinotifyをインストールすることです。 Pythonやgccはありません。 –

+0

coreosのパッケージマネージャを使ってpythonとgccをインストールできるはずです。理論的には、これがあなたが取るべきアプローチであれば、すべてのソフトウェアをインストールするドッカーファイルを書くべきです。 [こちら](https://docs.docker.com/engine/reference/builder/)は、dockerfilesに関するドキュメントです。 – gpwclark

+0

この回答は、直面していた問題の理解に役立ちましたか? – gpwclark

関連する問題