深入浅出 Docker 容器数据卷
Hello 朋友们,又快要一周结束了,利用今天这个休息的时间准备再出一篇云原生的文章,研究下 Docker 的容器数据卷,因为这个点自己也不是很熟练,因此想利用一篇文章再次深度学习并分享下,如果哪里有写的不妥的地方还请大家多多提醒呀!
1 什么是数据卷
一句话,数据卷就是存放数据的卷
(哈哈哈)。但是对于“卷”这个概念,对计算机存储方面掌握不扎实的小伙伴应该会有一些陌生,卷的英文是 Volume,在 Windows 系统中经常会被提及,他的概念类似于分区(Partition),都是基于磁盘来进行动态划分的,可以初步的定义为硬盘上的存储区域
,当然卷也分为基本卷、镜像卷、带区卷等做种类型,像 RAID 0、RAID 1、RAID 5 等常见的磁盘分区阵列也是属于卷的一种。
2 Docker 容器数据卷
Docker 容器数据卷,我们可以做一下概念你的拆分Docker容器数据卷=Docker的容器的数据卷=Docker的容器的数据的卷
,因此它的概念还是基于“卷”的。
因此 Docker 容器数据卷的作用就是使用了一个命名卷来将数据持久化到我们的数据库中,让我们能清楚的知道容器的数据存放在了哪里,当然在多容器的环境下也能达到使容器数据更加安全,方便管理等目的。
Docker 容器数据卷的工作就是将 Docker 容器数据通过映射进行备份+持久化到本地的主机目录。
3 Docker 容器数据卷的挂载使用
Docker 将容器卷于宿主机进行挂载一般有三种方式(官方推荐有两种):
named volumes:命名卷,也叫具名挂载,持久化数据,不必知道确切的挂载点。
bind mounts:绑定挂载,也叫匿名挂载,可以控制主机上的确切挂载点。
tmpfs mounts(不建议使用):将容器数据挂载到宿主机的内存中
三种方式的不同点:
推荐的两种进行比较:
3.1 命名卷的使用
语法:
其他语法:
所有 docker 容器内的卷,在未指定主机内目录时,都在:/var/lib/docker/volumes/卷名/_data 下,可通过具名挂载可以方便的找到卷,因此广泛使用这种方式进行挂载。
3.2 绑定挂载的使用
示例:
4 小总结
命名卷是将数据持久保存在 Docker 容器和服务中的首选方法。命名卷的一些适用于:
在多个运行中的容器之间共享数据。容器停止或删除时,该卷仍然存在,并且多个容器可以同时挂载相同的卷
数据备份
绑定挂载适用于:
将配置文件从主机共享给容器。
在 Docker 主机上的开发环境和容器之间共享源代码或构建工件。
版权声明: 本文为 InfoQ 作者【Barry Yan】的原创文章。
原文链接:【http://xie.infoq.cn/article/fc36788c22a019c72833463d3】。文章转载请联系作者。
评论