Docker数据容器保护方式利弊

Docker是一个非常成功的Linux开源项目。它在Linux操作系统下无需增加管理器即可虚拟化应用程序。该应用程序常被抽象地误认为是操作系统(具有Linux内核资源隔离功能的OS)的唯一的应用程序。换句话说,该Linux应用程序部署在Docker数据容器中,该容器能利用Linux OS 的所有功能并能隔离应用程序。

Docker容器具有移动性并且与虚拟机(VMs)相互隔离,且仅在虚拟机上进行部分操作。在深入研究Docker数据保护这个问题之前,弄清楚Docker镜像和Docker数据容器之前的差异是十分必要的。一个Docker镜像包括一或多个应用程序的操作系统。而Docker 容器(本文的重点)是独立于镜像之外的运行实例。

Docker数据容器保护机制目前十分简单,不像VM数据保护机制那么复杂成熟。这种保护机制与VMware vSphere存储接口数据保护、Microsoft Hyper-V Volume卷影复制服务或内核VM快照API不同。这就使得Docker容器保护机制更具有挑战性。好消息是我们有几种方法来实现它。

方法一:Docker内置备份和恢复机制

在备份Docker数据容器之前,容器当前状态必须保存成Docker镜像。该容器的运行状态需要简要暂停以便获取快照,并将该镜像重名为一个新的Docker 镜像--通常是基于时间线前一个镜像的变型。将Docker容器备份当成一个镜像在不同Docker主机系统上部署时,你要么将其推送懂啊Docker私有仓库中要么将其保存为一个.tar文件只有这样,该镜像才能被移植到任一Docker主机系统上。

Docker容器的恢复取决于它的部署方式。如果镜像被推送到Docker私有仓库中,使用Docker命令“run”命令即可启动一个新的容器实例。如果该镜像存储成一个.tar文件,该.tar备份文件必须加载到Docker主机系统的本地镜像仓库中然后利用“run”命令来启动一个新的容器实例。

建立Docker备份和恢复并非自动进行。每一次都需手动进行这些备份和恢复或者写一个脚本来实现该功能。大多数IT管理人员是采取写脚本这一方式。尽管脚本并不复杂,但是当软件改变或者基础设施发生变化时,它们需要重写。在前期以及每当生态系统变化时,记录脚本和进行质量保证(QA)都是十分有必要的,以此防止备份和恢复故障。当质量保证团队发现脚本的问题时,脚本需要进行修改或者重写来纠正这些错误,进而保证Document升级。尽管这看起来是一个很繁琐的过程,但这是保证Docker数据容器保护方式的关键。

许多IT管理员不希望面对Document、QA、故障排除或修复、修补程序和更新脚本等等麻烦,更不想手动进行所有的备份和恢复。他们更喜欢独立、第三方支持的Docker数据保护方式。

方法二:传统基于文件的备份和恢复

传统的文件备份方式已流行多年,因为该方式支持多种类型的服务器、操作系统、文件系统、虚拟机管理程序、数据库或结构化应用程序。因为该技术可同时在Linux和Window上使用,所以同样可用于Docker数据容器上。

传统的基于文件的备份和恢复需要一个操作系统或者是文件系统代理;一个结构化应用程序代理如关系数据库、电子邮件等等;以及备份(即媒体)服务器。文件系统代理具有管理员权限,能够扫描文件系统并将其备份。结构化应用代理在应用进行备份时能短暂地暂停应用。Docker容器可以看做文件系统代理-仅是另一份需要备份的文件。如果容器中存在结构化应用程序,结构化应用程序代理必须作为Docker镜像和运行容器的一部分安装。

该方法存在几个问题。代理是一个软件,它需要不断地运行、管理、修复、更新等等。很多代理都具有破坏性,需要操作系统重启时进而破坏了所有的容器;而另一些在每一次部署、修复或更新时都需要应用程序重启。这意味着它们需要预定在中断对操作影响最少的时刻,通常是周末或者深夜。这同样是很多的IT公司已经使用虚拟机管理程序APIs提供的无代理备份原因。如前所述,现在不存在与Docker容器相连API。如果IT经理决定在Docker容器中不使用结构化应用程序代理,然后备份只是 crash-consistent 与application-consistent相比较了。

方法三:存储快照

存储快照的方式十分简单,大多数快照消耗很少额外内存,除非需要实际地数据拷贝。然后快照被复制并移动到另一个Volume、存储系统甚至是云存储上。每个 volume、 LUN或文件系统中可用快照的数量--假设每一Docker数据容器--各供应商存储系统各不相同。一些可能容纳很多一些仅能容纳少量快照。一个相对较新的公司Reduxio甚至可以在每次写入上都添加时间戳然后基于这些写操作分发一个虚拟快照,这就提供了连续快照能力。使用这些功能需要该存储器作为Docker镜像和容器的主要存储器。

快照存储的关键问题在于它们是crash-consistent,而非application-consistent--唯一的例外是Reduxio。此外,许多存储系统在给定的任一Volume、LUN或者文件系统的快照数目都有很强的限制。这就要求早期的快照需要复制下来,这就会消耗更多的存储空间并且需要额外的存储系统。

存储快照经常与备份应用程序相结合以此来保持与应用程序一致性。结构化应用程序的备份代理与结构化应用同时安装。在储存系统获取快照之前,该代理能暂停结构化应用,媒体备份服务器告诉存储系统获取快照,然后告诉该代理重启结构化应用程序。这就提供了应用程序一致的快照,目前 Commvault、 EMC、 Hewlett Packard Enterprise、Veritas和其他几家公司能够提供。这种方法在管理结构化应用程序代理时仍然存在问题。

刚刚描述的组合的一个变本是复制数据管理,可由Actifio、Cohesity 和Rubrik提供。复制数据管理是在一个系统中将文件备份和存储快照的两者结合。这里并没有外部媒体备份服务器。这些产品往往集中在虚拟管理程序API上。只有Actifio一个产品,存在操作系统代理可以备份Docker容器和镜像。但他们之中不存在任一产品同时具有结构化应用程序的一致性。

方法4:无代理的云备份和恢复

在撰写本文的时候,只有Asigra-powered 云备份和恢复服务提供Docker数据容器和Docker 镜像备份。该服务提供了一个on-site物理或虚拟设备,无需代理来备份操作系统和所有的Docker 容器。最新的备份保存在本地云,该方式具有很快的回收率。此外,所有的备份都保存在云备份和恢复服务提供商的数据中心内。在第一次全卷备份后,所有的额外的备份都是永久增量,提供虚拟的、全容量的、一次性回收。所有云端备份数据删除重复数据并对数据压缩。

这种方法的缺点是:它必须得到云服务提供商而非软件开发人员(尽管它可以作为一个私有许可证。)的许可。

原文链接: Docker data container protection methods: Pros and cons(译者/刘崇鑫 审校/朱正贵 责编/仲浩)

译者简介:刘崇鑫,北京邮电大学研究生在读,专业光通信工程。

原文发布于微信公众号 - CSDN技术头条(CSDN_Tech)

原文发表时间:2015-11-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程坑太多

『中级篇』 Docker Bridge详解(26)

1113
来自专栏磐创AI技术团队的专栏

5分钟配置好你的AI开发环境

无论是第一次设置TensorFlow的新手数据科学爱好者,还是使用TB级数据的经验丰富的AI工程师,安装库、软件包或者框架总是一个困难又繁琐的过程。但是像Doc...

1476
来自专栏Debian社区

Docker 17.06 社区版发布

今天我们发布了Docker CE 17.06,它包含了诸多新特性、优化和bug修复。我们在四月份的DockeCon上公布了Moby项目,Docker CE 17...

1314
来自专栏信达雅

OpenShift 的容器镜像(第 3 部分):使您的镜像易用

这是我在欧洲,中东和非洲(EMEA)红帽技术交流 2017 会议上的一个会议记录,与会者包括 EMEA 所有红帽解决方案架构师和顾问。会议的主要内容包括了在创建...

2306
来自专栏从零学习云计算

kubernetes学习记录(1)——kubernetes初理解

入门时,学习阅读的为《你闺女也能看懂的插画版Kubernetes指南》。由Deis的平台架构师Matt Butcher向他女儿介绍什么是Kubernetes,内...

5210
来自专栏数据科学与人工智能

【Python环境】如何使用 Docker 快速配置数据科学开发环境?

数据科学开发环境配置起来让人头疼,会碰到包版本不一致、错误信息不熟悉和编译时间漫长等问题。这很容易让人垂头丧气,也使得迈入数据科学的这第一步十分艰难。而且这也是...

4695
来自专栏程序你好

从 Docker 的新手村出发?那么你需要这11条守则

1072
来自专栏大魏分享(微信公众号:david-share)

厉害了word哥 | 从两张图看红帽最高深的武功 |OpenShift

世上的高手 世上高手大约有两种: 第一种如下图这为老先生,一辈子纵横江湖数十载,所学武功实用有效,招数简明而力道雄厚,善于“简单粗暴”迅速解决问题。在老爷子的心...

4847
来自专栏北京马哥教育

写给新手的十一条 Docker 守则

1765
来自专栏杨建荣的学习笔记

巧用shell脚本生成快捷脚本(r2第12天)

在升级的过程中,可能需要准备一些额外的脚本,比如说做数据迁移的时候为了考虑性能,需要做如下的额外工作: 1.将部分表置为nologging 2.将部分index...

2895

扫码关注云+社区

领取腾讯云代金券