通过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