Docker 的两类存储资源 - 每天5分钟玩转 Docker 容器技术(38)

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 我们从本章开始讨论 Docker 存储。Docker 为容器提供了两种存放数据的资源:由 storage driver 管理的镜像层和容器层。Data Volume。我们会详细讨论它们的原理和特性。

我们从本章开始讨论 Docker 存储。

Docker 为容器提供了两种存放数据的资源:

  1. 由 storage driver 管理的镜像层和容器层。

  2. Data Volume。

我们会详细讨论它们的原理和特性。

storage driver

在前面镜像章节我们学习到 Docker 镜像的分层结构,简单回顾一下。

187.png

容器由最上面一个可写的容器层,以及若干只读的镜像层组成,容器的数据就存放在这些层中。这样的分层结构最大的特性是 Copy-on-Write:

  1. 新数据会直接存放在最上面的容器层。

  2. 修改现有数据会先从镜像层将数据复制到容器层,修改后的数据直接保存在容器层中,镜像层保持不变。

  3. 如果多个层中有命名相同的文件,用户只能看到最上面那层中的文件。

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

Docker 支持多种 storage driver,有 AUFS、Device Mapper、Btrfs、OverlayFS、VFS 和 ZFS。它们都能实现分层的架构,同时又有各自的特性。对于 Docker 用户来说,具体选择使用哪个 storage driver 是一个难题,因为:

  1. 没有哪个 driver 能够适应所有的场景。

  2. driver 本身在快速发展和迭代。

不过 Docker 官方给出了一个简单的答案:
优先使用 Linux 发行版默认的 storage driver

Docker 安装时会根据当前系统的配置选择默认的 driver。默认 driver 具有最好的稳定性,因为默认 driver 在发行版上经过了严格的测试。

运行docker info查看 Ubuntu 的默认 driver:

188.png

Ubuntu 用的 AUFS,底层文件系统是 extfs,各层数据存放在 /var/lib/docker/aufs。

Redhat/CentOS 的默认 driver 是 Device Mapper,SUSE 则是 Btrfs。

对于某些容器,直接将数据放在由 storage driver 维护的层中是很好的选择,比如那些无状态的应用。无状态意味着容器没有需要持久化的数据,随时可以从镜像直接创建。

比如 busybox,它是一个工具箱,我们启动 busybox 是为了执行诸如 wget,ping 之类的命令,不需要保存数据供以后使用,使用完直接退出,容器删除时存放在容器层中的工作数据也一起被删除,这没问题,下次再启动新容器即可。

但对于另一类应用这种方式就不合适了,它们有持久化数据的需求,容器启动时需要加载已有的数据,容器销毁时希望保留产生的新数据,也就是说,这类容器是有状态的。

这就要用到 Docker 的另一种存储机制:Data Volume,下一节我们讨论。

有个好消息:出版社现在搞促销,《每天5分钟玩转OpenStack》直降26元,全网最低价销售,有兴趣的同学可以访问 https://detail.tmall.com/item.htm?id=543416839771 了解详情。

二维码+指纹.png

目录
相关文章
|
6月前
|
存储 Docker 容器
Docker安装默认存储路径修改与镜像恢复
Docker安装默认存储路径修改与镜像恢复
216 0
|
6月前
|
存储 缓存 应用服务中间件
Docker 镜像解密:分层存储与镜像构建原理
Docker 镜像解密:分层存储与镜像构建原理
216 0
|
6月前
|
存储 持续交付 Docker
Docker 镜像解密:分层存储与构建原理多角度解析
Docker 镜像解密:分层存储与构建原理多角度解析
116 0
|
4月前
|
存储 Kubernetes Linux
解决Linux中/var/lib/docker/磁盘空间过大及k8s存储卷磁盘空间使用率过高的问题
解决Linux中/var/lib/docker/磁盘空间过大及k8s存储卷磁盘空间使用率过高的问题
146 0
|
6月前
|
存储 边缘计算 数据管理
Docker 存储驱动解析:选择最适合你的存储方案,优化容器化部署性能和数据管理
Docker 存储驱动解析:选择最适合你的存储方案,优化容器化部署性能和数据管理
142 0
|
存储 虚拟化 Docker
Windows11 Docker镜像存储路径更改(非C盘路径)
本文是博主学习Docker的记录,对于C盘空间有限的同学,希望对大家有所帮助。
1827 0
Windows11 Docker镜像存储路径更改(非C盘路径)
|
4月前
|
存储 数据管理 Docker
百度搜索:蓝易云【【Docker】Docker中 AUFS、BTRFS、ZFS、存储池概念的详细讲解】
总结: AUFS、BTRFS和ZFS是Docker中常见的存储驱动程序,它们提供不同的功能和性能特点。存储池是Docker存储概念中的一个重要组成部分,用于管理和组织存储驱动程序中的物理存储资源。选择适合的存储驱动程序和合理配置存储池可以提高Docker容器的性能和数据管理能力。根据具体的需求和环境,可以选择最适合的存储方案。
63 1
|
4月前
|
存储 Docker 容器
百度搜索:蓝易云【【Docker存储】Docker的容器迁移方式详解】
通过以上方式,可以在不同的Docker环境中迁移容器和相关的数据。根据具体需求和环境情况,选择适合的迁移方式。
40 0
|
6月前
|
存储 Cloud Native 应用服务中间件
【云原生】一文学会Docker存储所有特性
【云原生】一文学会Docker存储所有特性
51 1
|
6月前
|
存储 Linux Go
Docker 存储驱动解析:选择最适合你的存储方案
Docker 存储驱动解析:选择最适合你的存储方案
89 0