2016-09-22 72 views
1

我在CoreOS(主機)中運行Docker容器,並在容器的文件夾中裝載了一個主機文件夾。現在當主機文件夾內容發生變化時自動重啓Docker容器

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

,每次我改變時間(insert/delete)在主文件夾(folder_name)某些文件,我需要重新啓動容器(container_name)看到效果。

docker restart <container_name> 

有沒有從主機側面或碼頭側任何方式時,有該文件夾中的變化(insert/delete)自動重新啓動呢?

回答

2

重新啓動碼頭容器的文件夾更改與首先-v命令的整個概念相反。如果你真的真的需要以你建議的方式重新啓動容器,那麼唯一的方法就是從碼頭主機。有一些工具可以用來監視主機文件夾,當插入或刪除文件時,可以觸發docker restart <container_name>命令。這些工具是incroninotify-toolsHere是另一個有人問到與你相似的問題,並且使用我建議的工具之一推薦了答案。

現在,主機文件夾中的文件也不會在Docker容器中更改。它必須是在啓動後,您在Docker容器中使用的程序不會更新/folder_name文件夾的視圖。是否有可能強制您在Docker容器中運行的程序進行刷新或更新? -v命令通過綁定安裝工作,並且在docker中一直是一個穩定的功能。使用綁定安裝,home/core/folder_name文件夾IS(用於所有實際目的)與容器中的/folder_name相同的文件夾。

運行

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

此命令使您在容器內交互的shell命令。在這個shell發出命令:

cd /folder_name; touch a_file

現在去在外殼或某些文件瀏覽器泊塢窗主機上的/ home /核心/文件夾名。文件a_file將在那裏。您可以刪除主機上的該文件,然後返回運行在Docker容器中的shell並運行ls /folder_name。文件a_file不會在那裏。

因此,您需要使用inotify或incron來隨時在主機上更改文件時重新啓動容器,或者瞭解如何使用您在Docker容器中運行的程序來更新其視圖/folder_name文件夾。

+0

我明白了你的觀點。現在另一個問題是在coreos中安裝inotify。它沒有python或gcc。 –

+0

你應該可以使用coreos的包管理器來安裝python和gcc。理論上,如果這是你要採取的方法,你應該寫一個dockerfile來安裝所有的軟件。 [這裏](https://docs.docker.com/engine/reference/builder/)是dockerfiles的文檔。 – gpwclark

+0

這個答案能幫助你理解你面臨的問題嗎? – gpwclark

相關問題