所属技术领域:
云原生
| 名词定义|
是一个可供一个或多个容器使用的特殊目录。
可以达到以下目的:
1.绕过“拷贝写”系统,以达到本地磁盘 IO 的性能,(比如运行一个容器,在容器中对数据卷修改内容,会直接改变宿主机上的数据卷中的内容,所以是本地磁盘IO的性能,而不是先在容器中写一份,最后还要将容器中的修改的内容拷贝出来进行同步。)
2.绕过“拷贝写”系统,有些文件不需要在 docker commit 打包进镜像文件。
3.在多个容器间共享目录。
4.在宿主和容器间共享目录。
5.在宿主和容器间共享一个文件。
docker的理念将运行的环境打包形成容器运行,运行可以伴随容器,但是我们对数据的要求是希望持久化,容器之间可以共享数据,Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据作为容器的一部分保存下来,那么当容器被删除之后,数据也就没了,为了能够保存数据,在docker容器中使用卷。卷就是目录或者文件,存在于一个或者多个容器中,但是不属于联合文件系统,因此能够绕过Union File System提供一些用于持久化数据或共享数据的特点。
| 技术特点|
• 数据卷可以在容器之间共享和重用
• 对数据卷的修改会立马生效
• 对数据卷的更新,不会影响镜像
• 数据卷默认会一直存在,即使容器被删除
| 相关词|
Data Volume 数据卷: 是可以存放在一个或多个容器内的特定的目录,提供独立于容器之外的持久化存储;是经过特殊设计的目录,可以绕过联合文件系统(UFS),为一个或多个容器提供访问;
适用场景:
• 在多个容器之间共享数据,多个容器可以同时以只读或者读写的方式挂载统一个数据卷,从而共享数据卷中的数据
• 当宿主机不能保证一定存在某一个目录或一些固定的文件路径时,使用数据卷可以规避这种限制带来的问题
• 当想把容器中的数据存储在宿主机之外的地方时,比如远程主机上和云存储上
• 当你需要把容器数据在不同宿主机之间备份、恢复或迁移时,数据卷是很好的选择
数据覆盖问题
• 如果挂载一个空的数据卷到容器中的一个非空目录中,那么这个目录下的文件会被复制到数据卷中
• 如果挂载一个非空的数据卷到容器中的一个目录中,那么容器中的目录会显示数据卷中的数据。如果原来容器中的目录有数据,那么原始数据会被隐藏掉
这两个规则都非常重要,灵活利用第一个规则可以帮助我们初始化数据卷中的内容。掌握第二个规则可以保证挂载数据卷后的数据总是你期望的结果。