卷
卷是由Docker管理,非Docker进程不应该修改文件系统这一部分,卷是在Docker中保留数据的最佳方式。
创建卷命令:docker volume create --名称
将卷应用于容器的时候,此目录是装入容器的目录,类似绑定挂载的工作方式,除了卷由Docker管理与主机核心功能隔离。
删除未被容器使用的卷命令:docker volume prune
匿名卷在首次装入容器的时候未给出明确的名称,因此Docker为它们创建了一个随机名称,该名称在给定的Docker主机中保证是唯一的。除了名称外,命名和匿名卷的行为方式是一样的。
卷还支持使用驱动程序,这些驱动程序允许您将数据存储在远程主机或云提供程序上,以及其它可能性。
卷只能是目录,不能是单个文件,配置文件在主机文件修改后,容器会及时应用到,反之亦可。
绑定挂载
可以存储在主机系统的任意位置,Docker主机或Docker容器上的非Docker进程可以随时修改它们。
主机目录必须是一个完整的路径,该文件在绑定过程中如果不存在会自动创建,它们依赖于具有特定目录结构的主机文件系统。如果你正在开发新的Docker应用程序,请考虑使用命名卷。你无法使用Docker Cli命令直接管理绑定装入。
注意:使用绑定挂载注意你可以通过容器中运行的进程修改主机文件系统,包括创建,修改,删除重要的系统文件目录或文件。
tmpfs
挂载仅存储在主机系统的内存中,永远不会写入文件系统。主要可以在容器的生命周期供容器使用,以存储非持久状态的敏感信息。
绑定这种方式,可以是文件和目录,经测试.net core绑定单个配置文件appsettings.json,在主机目录修改后,需要启动容器才会生效。
使用绑定挂载或卷的提示
1:如果将空卷装入容器中存在文件或目录的目录中,则会将这些文件或目录复制到卷中,同样,如果启动容器的时候指定尚不存在的卷则会自动创建一个空卷。这是预先填充另一个容器所需数据的好方法。
2:如果将绑定挂载或非空卷装入容器中存在的某些文件或目录的目录中,则这些文件或目录会被装在模糊,也就是说绑定挂载或非空卷会遮盖容器中的文件内容,隐藏的文件内容不会被删除或更改,但是在安装绑定挂载或卷的时候无法访问。