一、
首先说原理,参考docker数据的覆盖问题, 是没错的。
- 第一条原则:如果挂载一个空的数据卷到容器中的一个非空目录中,那么这个目录下的文件会被复制到数据卷中。
- 第二条原则:如果挂载一个非空的数据卷到容器中的一个目录中,那么容器中的目录中会显示数据卷中的数据。如果原来容器中的目录中有数据,那么这些原始数据会被隐藏掉。
二、但关键是怎么解读。
1、先解读第一句话: “如果挂载一个非空的数据卷到容器中的一个目录中”,有三种使用方式:
-
方式1:采用configmap的话,configmap相当于一个主机上的数据卷,而且是文件。 所以挂载到容器后,就会覆盖容器文件。 为了只覆盖容器里面的指定文件,就可以和subpath结合。
-
方式2:采用主机文件, 所以挂载到容器后,就会覆盖容器文件。 为了只覆盖容器里面的指定文件,就可以和subpath结合。
-
方式3:采用主机目录, 所以挂载到容器后,就会覆盖容器目录。 为了只覆盖容器里面的指定目录,就可以和subpath结合。
2、再解读第二句话:“如果挂载一个空的数据卷到容器中的一个非空目录中”, 也是最容易出现问题情况。
很多人启动一个容器运行中间件&#