Rootop 服务器运维与web架构

docker挂载宿主机文件修改后容器内不同步问题

通过docker -v 参数挂载了配置文件到容器内。
发现在宿主机上改完后,进入容器内查看此文件并没有同步过来。

实际是因为-v 挂载文件(包括文件夹)是挂载的inode号,通过vi修改文件后inode号发生变化,但容器内还是旧的inode号。

参考:https://blog.csdn.net/biao0309/article/details/105186106 文章内容。
当使用vim之类的编辑器进行保存时,它不是直接保存文件,而是采用了备份、替换的策略,
就是编辑时,是创建一个新的文件,在保存的时候,把备份文件替换源文件,这个时候文件的 inode 就发生了变化,
而原来 inode 对应的文件其实并没有修改,也就是容器内的文件没有变化。
当重启容器的时候,会挂载新的 inode

# 测试,查看当前配置文件inode号为 4068031
root@server:/data/www/rgs/conf# stat www.conf 
  File: www.conf
  Size: 810       	Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 4068031     Links: 1
Access: (0644/-rw-r--r--)  Uid: (   33/www-data)   Gid: (   33/www-data)
Access: 2023-10-07 05:50:30.326634010 +0000
Modify: 2023-10-07 05:50:30.326634010 +0000
Change: 2023-10-07 05:50:30.326634010 +0000
 Birth: -

# 随便改点东西,添加个空行都可以。
root@server:/data/www/rgs/conf# vi www.conf 

# 再次查看inode号变为 4068032
root@server:/data/www/rgs/conf# stat www.conf 
  File: www.conf
  Size: 811       	Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 4068032     Links: 1
Access: (0644/-rw-r--r--)  Uid: (   33/www-data)   Gid: (   33/www-data)
Access: 2023-10-07 05:58:27.874527154 +0000
Modify: 2023-10-07 05:58:27.874527154 +0000
Change: 2023-10-07 05:58:27.874527154 +0000
 Birth: -


# 在容器内查看,还是4068031
root@404b0ceb1aea:/var/www/html# cd /usr/local/etc/php-fpm.d/
root@404b0ceb1aea:/usr/local/etc/php-fpm.d# stat www.conf
  File: www.conf
  Size: 810       	Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 4068031     Links: 0
Access: (0644/-rw-r--r--)  Uid: (   33/www-data)   Gid: (   33/www-data)
Access: 2023-10-07 05:58:22.458398126 +0000
Modify: 2023-10-07 05:50:30.326634010 +0000
Change: 2023-10-07 05:58:27.874527154 +0000
 Birth: 2023-10-07 05:50:30.326634010 +0000
root@404b0ceb1aea:/usr/local/etc/php-fpm.d# 

原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/5336.html

作者:Venus

服务器运维与性能优化

评论已关闭。