【问题标题】:what will happen if i delete my bind mount file while the container is running?如果我在容器运行时删除绑定挂载文件会怎样?
【发布时间】:2020-10-28 10:14:01
【问题描述】:

如果我在容器运行时删除绑定挂载文件会发生什么?

我正在使用在容器上运行的 grafana 映像,并且我指定了绑定挂载

volumes:
- ./data/grafana:/var/lib/grafana

但是当我在容器运行时删除目录 /data/grafana/ 时,我仍然可以找到我的仪表板和我的数据,除非我重新启动容器,这很正常,找不到任何东西

我的问题是主机文件的任何更改都会立即在容器文件上更新?

【问题讨论】:

    标签: docker docker-compose dockerfile grafana docker-volume


    【解决方案1】:

    大多数 Linux/Unix 文件系统的工作方式是,当您删除文件或目录时,您实际上所做的只是删除查找表中将文件名映射到所谓的 inode 的条目。

    当应用程序打开一个文件时,它使用查找表来查找 inode,然后所有操作都参与到该 inode 上。因此,如果应用程序打开了一个文件并且您将其删除,该应用程序将继续正常工作并能够读取/写入该文件。应用程序关闭后,将无法再次访问该 inode,因此对(现已删除的)文件所做的任何更改都将丢失。

    这同样适用于绑定安装。当你删除目录时,容器仍然有一个代表基目录的 inode 的有效句柄,并且会继续正常工作,直到容器被销毁。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-06
      • 1970-01-01
      • 2016-09-21
      • 2011-10-21
      • 2020-04-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多