在生产环境中使用Docker时,经常需要对数据进行持久化,这就有点像Redis里面的持久性一样的,或者需要在多个容器之间在进行数据共享,这就是Docker中我们说的数据管理操作。
容器中管理数据主要有两种方式:
数据卷(Data Volumes):容器内数据直接映射到本地主机环境;
数据卷容器(Data Volume Containers):使用特定容器维护数据卷;
01数据卷
数据卷(Data Volumes)是一个可供容器使用的特殊目录,它可以将主机操作系统目录直接映射进容器,类似于Linux中的mount行为。
数据卷可以提供很多有用的特性:
-
数据卷可以在容器之间共享和重用,容器间传递数据将变得高效与方便;
-
对数据卷内数据的修改会立即生效,无论是容器内操作还是本地操作;
-
对数据卷的更新不会影响镜像,解藕开应用和数据;
-
卷会一直存在,直到没有容器使用,可以安全地卸载它。
目前Docker提供了三种不同的方式将数据从宿主机挂载到容器中。
volume:
Docker管理宿主机文件系统的一部分,默认位于/var/lib/docker/volumes目录中,这是目前使用的最多的方式。
目前所有容器的数据都保存在这个目录下,由于没有创建指定卷,所以Docker帮默认创建了许多匿名卷。
bind mount:
表示可以存储在宿主机系统的任意位置,这种方法比较常用。但是bind mount在不同的宿主机系统时不可移植。
tmpfs mount:
表示挂载存储在宿主机系统内存中,而不会写入宿主机的文件系统,几乎不用。