速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

存储在容器中是如何工作的

  • 2015-09-30
  • 本文字数:1471 字

    阅读完需:约 5 分钟

将应用程序运行在容器中已经成为一种趋势,但是容器的概念并不是才有的。容器的起源实际可以追溯到大型机,这项技术在最近逐渐成熟,并以惊人的速度获得用户的兴趣和接受。

容器被设计成运行在操作系统之上的虚拟实例,它包含了应用程序在用户空间(user space)所需的所有内容。同时,容器提供一定的隔离性,使得运行在同一个操作系统之上的容器看起来是独立的,并且拥有整个操作系统。这种隔离还支持容器和外接交互。

目前有少数针对容器的备份软件,有没有一种方法能够使用任何备份软件来备份容器呢?

为了实现写时复制(copy-on-write),容器会使用一种名为叠加(overlay)文件系统的特性。即需要对根镜像进行修改时,容器会利用这一特性,将变更内容写入到独立区域并“覆盖”原有内容。这种修改通常都是瞬时的,也就是说,通常情况下,当容器删除时,这些修改也将不复存在。因此,容器默认是没有永久存储的。

为了解决存储问题,像 Docker 这样的工具,提供了两个新的特性来获得更加持久化的存储:Docker 卷和数据容器。

Docker 卷允许将数据保存在容器的启动卷之外。容器可以在启动时,通过“-v”开关挂载多个独立的数据卷。该参数会在Docker 的配置目录(/var/lib/docker)中创建一个实体,配置内容会保存在/var/lib/docker/volumes 目录中。每个子目录由卷的UUID(universally unique identifier)命名,其中包含该卷的配置,如卷ID、路径、读写权限等。卷的数据内容存储在/var/lib/docker/vfs/dir 目录中,同样由卷的UUID 命名。

卷中的数据可以在主机上进行读写,并且有着标准的文件权限。然而,使用卷的方式,有其优点和缺点。优点是由于采用标准文件系统,对容器的数据的备份、复制、移动等操作,可以在主机操作系统上完成。缺点是卷的名字使用了UUID,并且和容器ID 关联,导致卷路径很难和容器名称关联起来。目前,Docker 提供了 docker cp命令,可以将文件在主机和容器之前复制。

通过挂载外部卷的方式,还可以将存储放到 NFS(Network File System)或者 LUN(Logical Unit Number)上,这样可以方便的对容器数据进行备份。

另一种方式是采用数据容器。数据容器像 Docker 内部的 NFS 服务器一样,可以通过“–volumes-from”开关在容器启动时设置关联的数据容器。使用这种方式的优点是将应用数据独立抽取出来,而不必关心它实际存放的位置。

当然,使用卷和数据容器,可能会遇到一些问题:

  • 孤立的存储:当前一般容器默认的设置是容器删除之后保留容器使用过的存储。这样可能会导致一些卷已经没有容器引用,但是要删除它们成本又非常高,需要遍历主机上所有容器的配置,确保没有容器还在使用才能执行删除。
  • 数据安全:挂载的卷除了操作系统本身的文件权限控制,没有其他安全措施。这些文件可能会被主机上的进程修改,同时容器中的进程访问共享文件,也需要按照主机上的文件权限设置进行配置(如用户和组信息)。
  • 数据完整性:共享数据在数据完整性上无法保证,容器中的应用程序需要自己控制。同时数据备份需要容器或者主机上的应用程序来完成。

最后,容器存储上还有一个问题,就是不同主机上容器之间的存储无法共享。即目前容器可以使用外部存储,但是无法使用在其他主机上的数据容器。目前, ClusterHQ 公司开发了 flocker ,试图解决这一问题。也希望 Docker 官方能够在存储管理上提供分布式解决方案。


感谢魏星对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-09-30 19:003304

评论

发布
暂无评论
发现更多内容

Mysql篇-Buffer Pool中的三大链表

EquatorCoco

MySQL 数据库 链表

选择指南:开源项目管理软件的8大优质工具

易成研发中心

天翼企业云盘好用吗?深入探讨8款云盘

易成研发中心

在线项目管理软件哪个好?9大工具全面解析

易成研发中心

Redis 内存突增时,如何定量分析其内存使用情况

快乐非自愿限量之名

redis

企业适合的文档版本管理系统推荐,这8款值得关注

易成研发中心

企业网盘哪个好用?对比这9款主流软件

易成研发中心

多源异构数据源融合怎么做!一文解读(1)

RestCloud

数据挖掘 ETL 数据集成 多源异构数据融合

优秀作品已上传!和鲸助力 2024 年(第 17 届)中国大学生计算机设计大赛大数据应用大类国赛收官!

ModelWhale

大数据 人才培养 高校 数据竞赛

选择适合的文档管理软件:支持本地私有部署的6款

易成研发中心

线程状态转换?创建线程的几种方式?线程如何停止?

快乐非自愿限量之名

Java 算法 前端

携程网API接口接入实例:美食餐馆与景点推荐

代码忍者

API 接口 pinduoduo API

2024年免费项目管理软件有哪些?9款工具分析

易成研发中心

《马斯克万卡集群AI数据中心引 发的科技涟漪:智算数据中心挑战与机遇的全景洞察》

GPU算力

数据中心 高性能计算 智算中心 GPU 集群 马斯克万卡集群

企业文档如何管理更高效?5款主流工具方法一览

易成研发中心

云厂商的双11:从“价格”向“价值”倾斜的天平

脑极体

云计算 AI

如何选择项目管理软件?9个精选推荐

易成研发中心

项目管理软件哪个好?2024年排行榜前十名

易成研发中心

淘宝/天猫商品描述API返回值深度解析与实战应用

代码忍者

API 接口 pinduoduo API

8款研发项目管理软件评测,哪个工具最适合

易成研发中心

Mysql高可用架构方案

不在线第一只蜗牛

MySQL

一文读懂Pencils Protocol的Auction产品,以及其背后的价值支撑

西柚子

推荐一款企业级的C/C++在线编译器

Tp_jh

程序员 敏捷开发 嵌入式 云 IDE C++\

苹果电脑怎么读取ntfs磁盘 mac读写ntfs硬盘问题

阿拉灯神丁

硬盘 文件读取 磁盘管理 Paragon NTFS16 NTFS磁盘管理器

现代化可观测性平台(2)

俞凡

架构 最佳实践 可观测性

让空间计算触手可及,VR手套何以点石成金?

江湖老铁

轻量级项目管理软件推荐:2024年9款必看工具

易成研发中心

游戏行业使用高防独立IP有什么好处?

网络安全服务

服务器 DDoS 高防IP 高防IP服务 DDoS 攻击

inBuilder低代码平台特性推荐系列第二十六期——定时器管理

inBuilder低代码平台

低代码 定时器

文献解读-DNAscope: High accuracy small variant calling using machine learning

INSVAST

基因数据分析 生信服务 DNAscope 基准与方法研究 Sentieon

业界领先性能|焱融全闪 F9000X 荣获 AI 存储金奖

焱融科技

人工智能 全闪存储

存储在容器中是如何工作的_语言 & 开发_金灵杰_InfoQ精选文章