Docker 学习 8. 数据卷持久化
数据卷简介
数据卷是宿主机中的一个特殊的文件/目录,这个文件/目录与容器中的另一个文件/目录进行了直接关联,在任何一端对文件/目录的写操作,在另一端都会同时发生相应变化。
在宿主中的这个文件/目录就称为数据卷,而容器中的这个关联文件/目录则称为该数据卷在该容器中的挂载点。·数据卷的设计目的就是为了实现数据持久化,其完全独立于容器的生命周期,属于宿主机文件系统,但不属于 UnionFS。因此,容器被删除时,不会删除其挂载的数据卷。
数据卷特性
- 数据卷在容器启动时初始化,如果容器启动后容器本身已经包含了数据,那么,这些数据会在容器启动后直接出现在数据卷中,反之亦然。
- 可以对数据卷或挂载点中的内容直接修改,修改后对方立即可看到。
- 数据卷会一直存在,即使挂载数据卷的容器己经被删除。
- 数据卷可以在容器之间共享和重用。
创建数据卷
原理是 Linux 硬连接。
1 | docker run -it -v [宿主机目录绝对路径]:[容器目录绝对路径] [镜像标识] /bin/bash |
数据卷共享
这种模式建议单独创建一个数据卷容器提供共享。因为如果被共享的数据容器有应用服务,把容器搞崩了,会影响其他的容器共享数据卷。
1 | docker run -it --volumes-form [被共享的容器] [镜像标识] /bin/bash |
Dockerfile 持久化
VOLUME 指令可以在容器中创建可以挂载数据卷的挂载点。其参数可以是字符串数组,也可以是使用空格隔开的多个纯字符串。例如,VOLUME[“Nar/www”,”/etc/apache”]或 VOLUME /var/www/etc/apache.
创建容器后,如果要看挂载点对应的宿主机目录,就用 docker inspect 命令查看容器详情。可以看到”Mounts”下的挂载点信息。