主机文件夹内容发生变化时自动重启Docker容器

时间:2016-09-22 02:43:49

标签: docker containers restart coreos

我正在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)时,主机端或泊坞方是否有任何方法可以自动重启?

1 个答案:

答案 0 :(得分:2)

在文件夹更改时重新启动docker容器首先与-v命令的整个概念完全相反。如果你真的真的需要以你建议的方式重启容器,那么唯一的方法是从docker主机。有一些工具(我可以说出我的头脑,肯定有更多)可以用来监控主机文件夹,当插入或删除文件时,你可以触发docker restart <container_name>命令。这些工具是incroninotify-toolsHere是有人问过的与您类似的另一个问题,并建议使用我建议的其中一种工具。

现在,也无法在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文件夹。

相关问题