Docker挂载单个文件时,在宿主机修改内容时产生的问题

问题现象:当docker将宿主机上的一个文件直接挂载到容器内时,在宿主机上修改该文件的内容后,在容器中看到该文件内容不变,或者容器中该文件不见了。

这个问题的大致原因是文件系统的问题。当你使用一些编辑器时(我这使用的是PHPStorm)你对文件做的修改不会直接保存该文件,而是创建一个新文件并保存到该位置。

这样的话就破坏了volume的挂载绑定,因为挂载绑定是基于文件系统的inode,因为我们前面讲的编辑器的行为改变了inode,所以宿主机上内容的改变不会同步到容器内。

你可以尝试一下在宿主机上使用记事本对内容进行修改,结果容器内的文件内容会如同我们预期的被修改了。所以根据这个问题的原因来看,如果你的编辑器在保存时会新建文件并覆盖原文件这样的操作,那么你可能先要看看能否对编辑器进行配置,取消这种保存方式。比如我使用的PHPStorm(当然JetBrains家族的编辑器都有些类似,你也可以参考),通过[File] - [Settings] - [System Settings] 中,找到Use "safe write"(save changes to a temporary file fisrt)这个选项,把前面的勾去掉即可,通过该选项的注释你可能也看懂是什么作用了吧。

当然,你也可以选择直接挂载文件夹而不是挂载单个文件来避免这个问题。

具体内容可见:File mount does not update with changes from host · Issue #15793 · moby/moby · GitHub

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值