主机文件夹内容更改时自动重启Docker容器

我正在CoreOS(主机)中运行一个Docker容器,并用一个容器的文件夹装载一个主机文件夹。

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

现在,每当我更改( insert/delete )该主机文件夹( folder_name )中的某个文件时,我必须重新启动容器( container_name )才能看到效果。

 docker restart <container_name> 

有没有办法从主机端或docker端自动重新启动,当文件夹中有更改( insert/delete )?

重新启动docker容器的文件夹更改是首先与-v命令的整个概念相反的。 如果你真的真的需要以你build议的方式重新启动容器,那么唯一的办法就是从docker主机那里。 有几个工具可以用来监视主机文件夹,当插入或删除文件时,可以触发docker restart <container_name>命令。 这些工具是incron和inotify工具 。 以下是另一个有人问到与你相似的问题,并使用我build议的工具之一推荐的答案。

现在,主机文件夹中的文件也不会在Docker容器中被更改。 它必须是你正在泊坞窗容器中使用的程序启动后没有更新/folder_name文件夹的视图。 是否有可能强制在Docker容器中运行的程序刷新或更新? -v命令通过绑定安装工作,在docker中已经有一段时间了。 通过绑定挂载, home/core/folder_name文件夹(实际上是)与容器中的/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视图的视图夹。