我正在CoreOS(主机)中运行Docker容器并安装了一个带有容器文件夹的主机文件夹。
docker run -v /home/core/folder_name:/folder_name <container_name>
现在,每当我更改(insert/delete
)该主机文件夹(folder_name
)中的某个文件时,我必须重新启动容器(container_name
)以查看效果。< / p>
docker restart <container_name>
当文件夹中有更改(insert/delete
)时,主机端或泊坞方是否有任何方法可以自动重启?
答案 0 :(得分:2)
在文件夹更改时重新启动docker容器首先与-v命令的整个概念完全相反。如果你真的真的需要以你建议的方式重启容器,那么唯一的方法是从docker主机。有一些工具(我可以说出我的头脑,肯定有更多)可以用来监控主机文件夹,当插入或删除文件时,你可以触发docker restart <container_name>
命令。这些工具是incron和inotify-tools。 Here是有人问过的与您类似的另一个问题,并建议使用我建议的其中一种工具。
现在,也无法在docker容器中更改主机文件夹中的文件。必须是您在docker容器中使用的程序在启动后不会更新/folder_name
文件夹的视图。您是否可以强制在docker容器中运行的程序进行刷新或更新? -v命令通过bind挂载工作,并且在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
现在转到shell或某个文件浏览器中docker主机上的/ home / core / folder_name。文件a_file
将在那里。您可以在主机上删除该文件,然后返回到docker容器中运行的shell并运行ls /folder_name
。文件a_file
不会存在。
因此,您需要使用inotify或incron在主机上的文件更改时随时重新启动容器,或者弄清楚如何使用您在docker容器中运行的程序来更新其视图/folder_name
文件夹。