主机文件夹内容更改时自动重启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
视图的视图夹。