ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

docker的数据存储

2022-06-03 21:03:13  阅读:126  来源: 互联网

标签:容器 存储 Data storage driver 镜像 docker 数据 Docker


概述

Docker 为容器提供了两种存放数据的资源:由 storage driver 管理的镜像层和容器层;以及Data Volume

store driver

Docker镜像的分层结构如下图所示:

image-20220603174448265

容器由最上面一个可写的容器层,以及若干只读的镜像层组成,容器的数据就存放在这些层中。这样的分层结构最大的特性是 Copy-on-Write:新数据会直接存放在最上面的容器层。修改现有数据会先从镜像层将数据复制到容器层,修改后的数据直接保存在容器层中,镜像层保持不变。如果多个层中有命名相同的文件,用户只能看到最上面那层中的文件。

分层结构使镜像和容器的创建、共享以及分发变得非常高效,而这些都要归功于 Docker storage driver。正是 storage driver 实现了多层数据的堆叠并为用户提供一个单一的合并之后的统一视图。

分层结构使镜像和容器的创建、共享以及分发变得非常高效,而这些都要归功于 Docker storage driver。正是 storage driver 实现了多层数据的堆叠并为用户提供一个单一的合并之后的统一视图。

Docker 支持多种 storage driver,有 AUFS、Device Mapper、Btrfs、OverlayFS、VFS 和 ZFS。它们都能实现分层的架构,同时又有各自的特性。优先使用 Linux 发行版默认的 storage driver。Docker 安装时会根据当前系统的配置选择默认的 driver。

image-20220603174931109

Data Volume

Data Volume 本质上是 Docker Host 文件系统中的目录或文件,能够直接被 mount 到容器的文件系统中。Data Volume(数据卷)具有以下特点:1、Data Volume属于目录或文件 2、容器可以读写数据卷中的数据 3、即便容器被销毁,数据卷中的数据依旧存在。

Data Volume类型
  • bind mount:容器内的数据被存放到宿主机文件系统的任意位置,甚至存放到一些重要的系统目录或 文件中。使用bind mounts的容器可以在通过容器内部的进程对主机文件系统进行修改,包括创建,修改和删除 重要的系统文件和目录,这个功能虽然很强大,但显然也会造成安全方面的影响,包括影响到宿主机上 Docker以外的进程。用法:docker run -v /宿主机绝对路径目录:/容器内目录 镜像名
  • Docker managed volume:docker managed volumebind mount 在使用上的最大区别是不需要指定 mount 源,指明 mount point 就行了
Bind mount实践

image-20220603203035864

如上图所示,启动nginx容器并将data目录挂载到宿主机 /Users/docker 文件目录下。在nginx data目录下新建文件:touch test.txt。在宿主机/Users/docker目录下可以看到容器数据已经成功挂载:

image-20220603204040882

标签:容器,存储,Data,storage,driver,镜像,docker,数据,Docker
来源: https://www.cnblogs.com/crstly/p/16340632.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有