写点什么

深入浅出 Docker 容器数据卷

作者:Barry Yan
  • 2022 年 10 月 07 日
    北京
  • 本文字数:1522 字

    阅读完需:约 5 分钟

深入浅出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 run -d  -v 卷名:容器内目录  镜像名/id  
复制代码


其他语法:


Usage:  docker volume COMMAND
Manage volumes
Commands: create Create a volume inspect Display detailed information on one or more volumes ls List volumes prune Remove all unused local volumes rm Remove one or more volumes
Run 'docker volume COMMAND --help' for more information on a command.
复制代码


所有 docker 容器内的卷,在未指定主机内目录时,都在:/var/lib/docker/volumes/卷名/_data 下,可通过具名挂载可以方便的找到卷,因此广泛使用这种方式进行挂载。

3.2 绑定挂载的使用

示例:


# 挂载命令[root@iZ1608aqb7ntn9Z 20210806]# docker run -it -v /opt/Docker/20210806/:/opt centos /bin/bash
# 进入到容器内部[root@e749444d0ee1 /]# cd opt/[root@e749444d0ee1 opt]# ls -ltotal 0-rw-r--r-- 1 root root 0 Aug 6 03:35 ymx
# 查看本机[root@iZ1608aqb7ntn9Z ~]# cd /opt/Docker/20210806/[root@iZ1608aqb7ntn9Z 20210806]# ll总用量 0-rw-r--r-- 1 root root 0 8月 6 11:35 ymx
# docker inspect [容器名或ID] 查看挂载[root@iZ1608aqb7ntn9Z 20210806]# docker inspect e749444d0ee1 ...... "Mounts": [ { "Type": "bind", "Source": "/opt/Docker/20210806", # 对应主机的源目录 "Destination": "/opt", # 容器中的目录 "Mode": "", "RW": true, "Propagation": "rprivate" } ],......
复制代码

4 小总结

命名卷是将数据持久保存在 Docker 容器和服务中的首选方法。命名卷的一些适用于:


  • 在多个运行中的容器之间共享数据。容器停止或删除时,该卷仍然存在,并且多个容器可以同时挂载相同的卷

  • 数据备份


绑定挂载适用于:


  • 将配置文件从主机共享给容器。

  • 在 Docker 主机上的开发环境和容器之间共享源代码或构建工件。

发布于: 刚刚阅读数: 6
用户头像

Barry Yan

关注

做兴趣使然的Hero 2021.01.14 加入

Just do it.

评论

发布
暂无评论
深入浅出Docker容器数据卷_10月月更_Barry Yan_InfoQ写作社区