什么是数据卷(Data Volume):
- 我们都知道Docker其中一个理念就是应用和环境打包.通常docker容器的生命周期都是和容器中的应用是一致的.而我们对数据的要求是持久化,另外docker容器之间也需要有一个共享数据的渠道.这些需求就催生了数据卷的需求.
- 数据卷是经过特殊设计的目录,可以绕过联合文件系统(UFS),为一个或者多个容器提供访问.
- 数据卷设计的目的,在于数据的永久化,它完全独立与容器的生命周期,因此Docker不会在容器删除的时候删除其关联的数据卷,也不会存在类似垃圾收集机制,对容器应用的数据卷进行处理.
通过上面这张图
- 1.数据卷是独立于容器的存在,他存在于宿主机中.和容器是分离的.
- 2.docker数据卷可以是文件或者目录.
- 3.docker容器可以使用数据卷和宿主机进行数据的共享.
- 4.同一个文件或者目录支持多个容器的访问.实现了容器间的数据共享和交换.
数据卷的特点
- 数据卷在容器启动时初始化,如果容器使用的镜像在挂载点包含了数据,这些数据会拷贝到新初始化的数据卷中.
- 数据卷可以容器之间共享和重用.
- 可以对数据卷里的内容直接进行修改.
为容器添加数据卷
docker run -v ~/container_data:/data -it centos /bin/bash
为数据卷添加访问权限
docker run -v ~/datavolume:/data:ro -it centos /bin/bash
使用Dockerfile构建包含数据卷的镜像
Dockerfile指令:VOLUME[“/data”]
示例:
# Test
FROM centos
VOLUME ["/datavolume1","/datavolume2"]
CMD /bin/bash
- 执行构建命令
docker build -t lanxw0720/dvt .
我们在容器启动的时候,我们在容器中指定的数据卷在容器中都会进行一次完整的初始化.根据镜像来创建的容器.使用的数据卷就没办法共享.当我们不能访问到本地目录时,我们怎么共享数据呢?预知后事如何,请看下一篇文章!