【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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

  • 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:003177

评论

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

【福利】腾讯WeTest专有云,限时开放招募体验官

WeTest

网易云音乐网络库跨平台化实践

网易云信

数据库 网络库 跨平台化

发布两小时,霸榜GitHub Spring Boot实战文档

Java GitHub spring 编程 程序员

阿里内网疯狂传阅的“M8级”分布式架构笔记,GitHub刚上线就霸榜

Java 编程 程序员 架构 阿里

模块三作业

panxiaochun

架构实战营

送给正在入行的小白:最全最有用的网络安全学习路线已经安排上了

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

ZGC在合合信息HBase平台中的实践

合合信息大数据团队

大数据 性能优化 ZGC HBase 合合信息

【得物技术】得物直播秒开体验提升

得物技术

体验 直播 视频 优化 卡顿

2021最新常见200+Java面试题汇总(含答案解析),unity高级工程师面试题

Java 程序员 后端

通用排序框架在爱奇艺推荐的应用

爱奇艺技术产品团队

元宇宙让我们实现“办公自由”?想要远程办公,保证员工效率和有效管理才是关键!

极狐GitLab

从开始到放弃:某高校电子校友卡开发笔记

CC同学

不愧是GitHub上标星120K的Java手册,全程干货,只讲重点

收到请回复

Java 程序员 后端 面试技巧

云开发CloudBase集成腾讯数字身份管控平台CIAM,快速实现账号管理

腾讯安全

2021年10月券商App行情刷新及交易体验评测报告,兴业证券荣登榜首!

博睿数据

自定义View:如何实现手动拖动的图片控件

Changing Lin

11月日更

完美诠释Netty,腾讯强推599页Netty进阶神技,惊掉我的下巴

Java 编程 程序员 Netty

全捐了,华为将欧拉开源操作系统代码、品牌等相关资产捐赠!!!

WorkPlus

质量基础设施一站式云服务平台搭建,NQI一站式服务平台

电微13828808271

数字化学习分享+一场思维探索工作坊+引导回顾会+公开演讲

研发管理Jojo

数字化转型 敏捷教练 咨询

百度APP移动研发平台及DevOps实践

百度开发者中心

DevOps 最佳实践 方法论 移动端 百度app

WorkPlus移动门户开启数字化智慧办公新模式

WorkPlus

今天面了个腾讯拿 38K 出来的,让我见识到了基础的天花板

Java 程序员 JVM springboot MyBatis标签

Python代码阅读(第57篇):倒序字符串

Felix

Python 编程 string 阅读代码 Python初学者

爱奇艺基于SpringCloud的韧性能力建设

爱奇艺技术产品团队

CSS页面设计稿构思与实现(四)之自定义字体

Augus

CSS 11月日更

WeTest与腾讯安全联合推出小程序质量方案,助力私域流量2.0新增长

WeTest

Gartner:对中国央行数字货币的创新见解

WorkPlus

博睿数据APM适配欧拉开源操作系统,为开发者性能体验保驾护航

博睿数据

网易云信携手“瑶台”,打造元宇宙商业化实践标杆案例

网易云信

人工智能 虚拟化 虚拟人 元宇宙

大数据实践:数据指标中心的建设思路

大数据技术指南

11月日更

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