容器存储中那些潜在的挑战和机遇

原文作者:尼克格拉斯马托斯,FICO 云服务工程高级总监,致力如何为Docker卷和数据容器缺乏持久化存储提供解决方案。

在容器内运行应用的想法并不新颖。是的,这是一个趋势,无数人研究容器这一热门主题,似乎发现了解决问题的方法。容器将解决一切。

容器的起源实际上能追溯到大型机时代,这并不是一个新技术,这一技术最终开始成熟并以惊人的速度获得用户关注和认可。容器使多个应用并行运行在单个操作系统之上,不管其是直接部署在物理服务器还是虚拟实例之上。这个是通过提供在“用户空间”(即应用运行的平台、系统或运行在内核上的代码)上执行多次拷贝的功能来实现的。

容器的当前反馈来自于运行虚拟实例相关的问题和开销,每个实例必须有专用的内存和存储资源。它们通常过大或不够,当对这些资源需求迅速扩展时,它运行会变得缓慢。

虚拟实例的设计提供隔离和独立升级每个实例的能力,但在运行类似或相同版本的操作系统的大环境中,每个虚拟实例都运行相同的进程,内存占用和一个近似的启动卷。

面向一个基于Web可扩展的网络计算架构目标时,传统的虚拟化可以说是很低效的,浪费誓如内存、处理器、存储、机架空间、电力、冷却系统和通用资源(如管理系统、IP地址)等的物理资源。

容器提供一定程度的分离,因为它是独立于它的临近容器存在的,所以它看起来似乎自拥有整个操作系统。这种隔离允许它们与外部进行交互。

在2014年指数级的增长趋势下,2015年容器和整个生态系统在企业环境中获得巨大发展,但是它仍然远未普及。虽然有极少的备份软件供应商能够提供容器备份的支持,但是有没有办法能实现任何备份软件都能备份容器呢?

相比而言虚拟实例这种方式预计是短暂的。它应用于更好的存储分配,容器使用的功能被称为一个覆盖文件系统来实现一个写副本的过程中,与存储任何更新信息的主文件系统的容器相比,它是基于原始镜像。如果容器被删除,这些更改通常会丢失。因此容器默认不具有持久存储能力。

然而,类似Docker这种分布式方案提供两种特性用于访问持久化存储资源:Docker卷和数据容器。

一个Docker卷允许数据被存储在启动卷之外的容器中,在主文件系统中可以在几方面实现。一个容器可以通过提供一个共享名传给“-v”切换参数创建一个或多个卷。

Docker配置文件夹(/var/lib/docker)中创建一个实体代表该卷的内容。卷上的配置数据存储在/var/lib/docker/volumes文件夹,每个子目录代表一个基于通用唯一标识符(UUID)卷名。数据本身存储在/var/lib/docker/vfs/dir基于UUID命名的文件夹。

任何卷中的数据都能在主机操作系统中浏览和编辑及标准权限应用。然而,卷的使用有利有弊。由于数据存储在标准的文件系统中,它能被操作系统备份、复制、导入和导出。缺点还有卷的命名遵循UUID规范,这使它很难与容器名称联系在一起。Docker通过提供 “docker cp”命令解决了这个问题,通过指定容器的名称,即可将文件和文件夹从主机目录中拷贝到该容器目录中。这与rsync类似。

它将可能通过提供外部共享存储在一个NFS共享或LUN并通过提供卷选项来访问外部存储上创建的主机共享,虽然这是不推荐的。

一个Docker卷也可以与主机目录有关。这里要再次用到“-v”切换,格式如下:“-v /host:/container”。这种方法允许容器访问主机上的持久数据。

它将可能通过提供外部共享存储在一个NFS共享或LUN,并通过提供卷选项来访问外部存储上创建的主机共享。这种方法也可以用来备份由容器访问的数据。

Docker中管理数据的另一选择是Docker数据容器。这个概念是指一个或多个卷在内的一个休眠容器。这些卷可以导出到一个或多个其它容器中,当启动附加的容器时,使用‘-volumes-from’切换。数据卷容器就像是内部的Docker NFS服务器,从中心点提供访问容器的支持。

这种方式的优点是它从原始数据的位置抽象出来,让数据容器变为一个逻辑中心点。它还允许应用程序容器访问数据容器卷以在专用容器中保存数据持久性,并将其销毁。

在使用卷和数据容器中有一些问题需要了解。

独立存储

目前在没有删除相关卷的情况下是可以删除容器的。事实上,这是默认的行为,除非重写。最终它可以很容易地清楚没有相关引用容器中的独立卷。

清除独立存储是一项很艰巨的任务,因为它需要通过在容器配置文件去对容器及其相关的卷进行匹配。

安全

对于容器卷和数据,除了标准文件权限和配置“只读”或者“读写”访问,没有其他别的安全性问题。这意味着用户在容器上的文件访问权限需要匹配主机设置。

数据完整性

使用卷和数据容器共享数据,能够保护数据的完整性。如文件锁定需要容器本身的管理功能。这是一个额外的开销,必须添加到应用程序中。

容器没有提供数据保护设施,如快照或复制,因此数据管理必须由主机或容器来处理。

外部存储也缺乏支持。除了系统操作系统中提供的功能外,Docker并没有在外部存储中提供特定的支持。

容器卷默认存储在/var/lib/dockerdirectory目录中,这可能会成为一个性能瓶颈。然而,在Docker启动进程中转换容器卷默认存储位置是可行的。

最后一个点突出了当前容器存储的问题:无法管理在单独的物理主机上运行的容器之间的数据共享。

数据卷可以置于外部存储中,但是当前的设计不具备使用卷从一台主机转移到另一台主机的能力。为了解决这个问题,Flocker提供的解决方案从ClusterHQ正在尝试解决卷移植带来的地址问题。也有提出改变类似Docker这种分布式方案中增加更多卷管理功能。

本文作者:吴锦晟

来源:51CTO

时间: 2024-10-07 10:28:33

容器存储中那些潜在的挑战和机遇的相关文章

容器技术在数据中心存储中扮演什么角色?

容器是VMworld 2015大会最为热门的话题之一.VMware很清楚地看到了近期容器与虚拟机混搭将会快速进入企业数据中心.IT组织仍旧需要捍卫安全性以及数据管理需求,即使是容器化的应用也不例外.VMware已经在虚拟机端交付了容器,而且相关设计已经取得成功,对虚拟化及云管理解决方案进行了扩展以支持(而且我认为最终会同化)企业集装箱化项目. VMware全新的vSphere集成容器(VIC)使得管理及确保运行在虚拟机(称之为虚拟容器主机)中容器的安全性几乎和管理及确保传统虚拟机的安全性没什么两

【深度】阿里Docker服务开发中的5大挑战与经验沉淀

核心专家的深度分享! 阿里云资深技术专家 易立(微垣) 易立,阿里资深专家,目前负责阿里云容器技术相关的产品的研发工作.易立毕业于北京大学,获得学士和硕士学位:加入阿里之前,曾在IBM中国开发中心工作14年,担任资深技术专员,作为主要架构师负责IBM企业平台云产品线PureApplication System的研发工作:还作为架构师.主要开发人员负责和参与了一系列IBM在Web 2.0,SOA中间件的研发和创新,也曾为全球客户提供SOA技术咨询和项目实施. 以下是采访实录: 请介绍下阿里云容器服

当Docker遇到数据库:在阿里云容器服务中使用RDS

Docker与持久化服务 最近一段时间以来,微服务架构和Docker成为了技术社区的"网红".其背后的原因是将微服务与Docker的结合在一起对现有的软件生命周期从架构设计.开发测试到运维迭代构成了一种"颠覆性"的力量:微服务鼓励开发者将整个软件解构为较小的功能组件:每个组件能够独立开发.运维.伸缩和容错:组件之间通过标准的服务接口进行通信,而组件可以选择最适合的技术栈来实现.而容器技术进一步拓展了这种解耦性,它能够将软件与其部署环境分离,利用容器敏捷和可移植的使得

深度分析云存储中虚拟化技术构成及应用

存储领域国际权威机构SNIA(存储网络工业协会)给出了存储虚拟化(StorageVirtualization)的定义:"通过将存储系统/子系统的内部功能从应用程序.计算服务器.网络资源中进行抽象.隐藏或隔离,实现独立于应用程序.网络的存储与数据管理".存储虚拟化技术将底层存储设备进行抽象化统一管理,向服务器层屏蔽存储设备硬件的特殊性,而只保留其统一的逻辑特性,从而实现了存储系统的集中.统一.方便的管理. 与传统存储相比,虚拟化存储的优点主要体现在:磁盘利用率高,传统存储技术的磁盘利用率

容器存储架构比较:Kubernetes、Docker和Mesos Compare

本文讲的是容器存储架构比较:Kubernetes.Docker和Mesos Compare[编者的话] 容器存储是容器离不开的一个话题,对于无状态的Docker容器,容器重启时容器数据会自动清除,一些静态的数据我们可以通过配置文件或者在容器build时直接写死.但是对于数据库.日志文件等可以实时变化的数据,我们不能够通过这种方法存取.结合场景这次主要谈下Docker的存储方式,以及主要存储方式的对比. [3 天烧脑式基于Docker的CI/CD实战训练营 | 北京站]本次培训围绕基于Docker

容器服务中使用ELK

容器服务中使用ELK 日志是IT系统的重要组成部分,记录了系统在什么时候发生了什么事情.我们可以根据日志排查系统故障,也可以做统计分析.通常日志存放在本机的日志文件里,需要查看日志的时候,登录到机器上,用grep等工具过滤关键字.但是当应用要部署在多台机器上的时候,这种方式查看日志就很不方便了,为了找到一个特定的错误对应的日志,不得不登录到所有的机器上,一个文件一个文件的过滤.于是出现了集中式的日志存储方式:所有日志收集到日志服务里,在日志服务里可以查看和搜索日志. 在Docker环境里,集中式

在阿里云容器服务中使用NAS(NFS)数据卷

在阿里云容器服务中使用NAS(NFS)数据卷 Docker的特性,决定了容器本身是非持久化的,容器被删除后其中的数据也一并被删除了.Docker提供数据卷(Volume),通过挂载宿主机上的目录来实现持久存储. 但宿主机上的数据卷有很大的局限性 容器在机器间迁移时,数据无法迁移 不同机器之间不能共享数据卷 为了解决这些问题,阿里云容器服务提供第三方数据卷,将各种云存储包装成数据卷,可以直接挂载在容器上,不同容器间可以共享,并在容器重启.迁移时自动重新挂载. 在上一篇文章中,我们介绍了如何使用OS

重新想象 Windows 8 Store Apps (24) - 文件系统: Application Data 中的文件操作, Package 中的文件操作, 可移动存储中的文件操作

原文:重新想象 Windows 8 Store Apps (24) - 文件系统: Application Data 中的文件操作, Package 中的文件操作, 可移动存储中的文件操作 [源码下载] 重新想象 Windows 8 Store Apps (24) - 文件系统: Application Data 中的文件操作, Package 中的文件操作, 可移动存储中的文件操作 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 文件系统 Applicatio

探索 | 容器存储有哪些问题和机遇?

本文讲的是探索 | 容器存储有哪些问题和机遇,[编者的话]在容器技术流行的背景下,随之而来出现了一些应用上的问题.本文介绍了容器存储方面所出现的一些问题.对这些问题进行了详细的描述,同时也给出了几种解决方案. 作者:尼克格拉斯马托斯,FICO 云服务工程高级总监,致力如何为Docker卷和数据容器缺乏持久化存储提供解决方案. 在容器内运行应用的想法并不新颖.是的,这是一个趋势,无数人研究容器这一热门主题,似乎发现了解决问题的方法.容器将解决一切. 容器的起源实际上能追溯到大型机时代,这并不是一个