企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
> 问题:多个容器共用了一个镜像的文件系统,如果一个容器对文件系统进行了修改,会不会影响到镜像呢?导致其他的容器也被改变? > 写时复制原理,容器的修改不会互相影响。 1、当前环境启动了3个nginx容器,且都是使用同一个底层镜像。 ![](https://img.kancloud.cn/63/1e/631e9fcbfb0adfdbbc238840201cecda_1830x397.png) 2、进入/var/lib/docker/overlay2/目录下的,镜像层目录下的nginx//nginx.conf文件,查看文件表示iNode,与容器中的的/etc/nginx/nginx.conf对比,说明此时是从镜像层去读取的这个文件。 ![](https://img.kancloud.cn/bc/ba/bcba1f6bcfdb9a97a09ceec61dc5cd3d_1363x173.png) 3、此时在容器内修改nginx文件,然后查看这个容器的diff层,发现在修改nginx文件后,该diff层下多了一个nginx文件。并且inode跟镜像层的文件inode不一致,说明是复制了一份新的文件到上层路径,再来进行的修改,用的不再是镜像的那个配置文件。 ![](https://img.kancloud.cn/20/25/2025edbe36e9bfb403b6b2a624450fee_1315x221.png) ![](https://img.kancloud.cn/4c/16/4c168327475403ddf86f9e4ae1437dd6_1549x220.png) <br> <br> **总结:当容器需要修改文件时,他会采用写时复制技术,将镜像的文件复制到自己容器的上层路径下,然后修改。如果下次要用这个文件,如果在容器层有就用容器层的,如果没有就看底层目录镜像层的。**