挂载文件的编辑生效

宿主机上放有配置文件(例如:nginx 的 nginx.conf),然后挂载到 docker容器内,当业务需要配置变化时,我们通常会修改这些配置文件。

当在宿主机上修改这些配置文件后,进入docker容器内查看时,这些挂载的文件并未发生对应的修改。

原因:

docker 挂载文件时,并不是挂载了某个文件的路径,而是实打实的挂载了对应的文件,即挂载了某个指定的inode文件。
vim等编辑工具保存文件时,并非直接保存,而是采用了备份、替换的策略,即编辑过程中:将变更写入新文件, 保存时,再将备份文件替换原文件,此时会导致文件的inode发生变化。原inode对应的文件其实并没有发生修改。

解决:

1) 在宿主机修改配置文件后,重启docker 容器。

修改宿主机挂载目录中的配置文件,要重启nginx容器

2) 修改vim配置,设置文件备份时的行为为覆盖

如何查找vim的配置文件

当你安装好vim(Gvim)后,你有俩个配置文件:

 1. 系统配置文件:/etc/vim/vimrc  (如果更改会影响所有的用户)

 2. 用户配置文件:~/.vimrc         (更改只会影响自己使用)

 如果还是找不到则打开vim 输入

        :version

打开vim配置文件

# vim /etc/vimrc
添加:set backupcopy=yes