本人github
在Docker中,当你映射宿主机的一个文件夹到容器中时,容器内对应路径的行为会依据几个因素而有所不同:
绑定挂载
如果宿主机文件夹非空:容器将访问并显示宿主机文件夹中已存在的数据。容器内原有此路径的数据将被覆盖,但并非被删除,而是无法访问,因为挂载点上现在反映的是宿主机的文件夹内容。如果宿主机文件夹为空:容器内此路径的原有内容将不会显示,因为现在这个挂载点映射的是宿主机的空文件夹。
Docker卷
如果Docker卷是新的:当一个新卷被首次挂载到容器的某个目录时,Docker会将该目录下的现有内容复制到卷中。这意味着容器的数据会初始化到卷中。如果Docker卷非空:如果卷已包含数据,那么这些数据将会显示在容器的挂载点中,而容器该路径下原有的数据将被覆盖,但同样并非被删除。
注意事项
数据持久化:使用挂载(无论是绑定挂载还是Docker卷)的主要目的是数据持久化。它保证了即使容器被删除,数据仍然保留在宿主机或Docker卷中。数据安全:在进行挂载操作前,了解和预测其行为是很重要的,以避免数据丢失或意外的数据覆盖。备份:在进行重要数据操作前,建议进行数据备份,尤其是在生产环境中。
总结,挂载操作不会删除容器中的数据,但根据挂载类型和宿主机文件夹/卷的状态,容器内被映射路径的原有数据可能会被隐藏或覆盖。