docker bind 文件修改不更新

现象

  1. bind mount 一个文件

  2. 在宿主机上用 vim 修改这个文件

  3. 容器内文件未更新

 

原因

https://github.com/moby/moby/issues/6011

Linux 的 bind mount 在目标是文件时真正 bind 的不是路径而是 inode

vim 修改过程会导致 inode 变化,因此修改不会同步到容器中

Workaround

  1. 方案一:不使用 vim 修改

    1. 替代方案一:使用 nano

    2. 替代方案二:创建一个拷贝后利用 cat modified_file > original_file 的方式来不修改 inode

  2. 方案二:使用 vim 时 :set backupcopy=yes