在Docker容器之间拷贝数据:原理与操作示例

时间:14-12-19 栏目:大数据技术文章 作者:爱说云网 评论:0 点击: 1,937 次

ocker容器可以类比成一个目录,它可以将一个应用程序运行时所依赖的所有环境(注:此应用依赖的其他的服务或程序等)打包在一起运行;同时可 以随意的对它进行“启动”、“停止”、“移动”或者“删除”等操作。Docker容器在Linux的命名空间(Namespace)机制下被激活,这样就 可以使得运行在同一服务器上的不同Docker容器能在网络(Networking)与存储(storage)层面上被“隔离”(isolation)的 运行。每个Docker容器都是在一个Docker镜像(image)的基础上创建而来;而一个Docker镜像可以支持创建、运行多个Docker容 器,这主要取决于服务器的硬件性能。所以,Docker容器是Docker运行时的表现形式。

  什么是Docker镜像?

  Docker 容器是基于一个Docker镜像创建的,而Docker镜像本身则可以通过Docker命令行工具或者Dockerfiles来生成。Docker镜像既可以包含操作系统基础设施(fundamentals)也可以包含一个预先搭建好的可以直接启动的应用程序栈。Docker镜像可以被看做是一个只读的模 板,这个模板中包含了很多“层”;而任何基于这个Docker镜像的新增操作或者更新操作都会导致一个基于当前层的新的层被创建出来,这个新创建的层是直接叠加在当前层之上的而非覆盖整个Docker镜像(注:创建新层的过程就是创建新容器的过程)。这就是一个新的Docker容器是怎么被创建出来的。

  从一个容器拷贝数据到另一个容器:

  在容器之间拷贝数据是Docker一个重要而且基本的功能。拷贝数据到其他容器的功能可以在真实场景中,如当服务器遇到不可预见的“灾难”(注:断电,宕机)时,起到备份数据的作用。

  使用容器的数据卷:

  数据卷(data volume,注:位置在/var/lib/docker/volumes)是容器可以访问,但是位置不在root文件系统中的一个目录。为了能让容器之间可以共享数据,Docker让“卷”(volume)可以绕过Docker镜像的层叠机制。容器中所有对镜像的改变全部都直接存储。每个容器都有固定的运行目录在/var/lib/docker目录下;而每个容器卷的数据则默认单独存储在/var/lib/docker/volumes/目录底下。 docker run命令的-v选项能够实现容器间数据卷中数据的互相拷贝。

  操作示例

  在这个例子中,我们假设基于镜像mymod/dvc:v1创建并运行了两个容器:dvc1与dvc2,以下是启动这两个镜像的命令:
  

  以下命令将创建并启动一个新的容器(也是基于mymod/dvc: v1镜像)但是挂载dvc1的数据卷,并使用cp命令拷贝容器dvc1中的数据到宿主机(host)上。
  

 新建的容器以读-写权限挂载宿主机的/var/temp目录为/host目录,然后挂载所有dvc1的数据卷,包含dvc1中的/var/www/html 目录,然后拷贝/var/www/html的文件目录到/host/dvc1_files下,対映宿主机/var/temp目录。

  现在我们用以下命令拷贝dvc1容器的数据到其他的容器中:
  

  新建的容器将宿主机的/var/tmp目录以只读的形式映射到dvc2容器的/host目录中,同时加载dvc2容器的所有数据卷,然后将/host /dvc1_files(对应宿主机/var/tmp/dvc1_files)目录的结构拷贝到dvc2容器的/var/www/html目录下。

  同样的目标可以在Dockerfile中使用ADD命令实现。ADD有两个参数一个是源容器一个是目的容器。ADD命令可以实现从源容器拷贝文件或者数据到目的容器的目标,而不用管各个容器的文件系统差异。

  结论

  Docker 肯定会提供更好的方式来“培养”容器化服务部署,以支持更广泛的部署平台;同时开发社区也期望Docker构建服务层级(service layer)。而Docker的做法是:开发容器核心容量,开发跨容器服务管理与通信功能。我们在这篇文章中所阐述的是数据可以在容器间被复制与冗余,这可以用来应付各种数据的损毁与恢复。Docker还提供了使用方便的容器间差异分析功能,这可以让容器更好的支持排错(debugging)、快速共享部 署环境以达到快速的部署的目标。Docker可以将容器部署环境从开发或者QA阶段直接提交到AWS部署环境。用户可以通过Docker的数据卷在容器间共享数据;可以将宿主机的目录直接挂载到容器中或者甚至可以从容器中导出数据存档,所以,Docker非常方便。

相关文章

专访携程大数据平台高级经理李亚锋:大数据技术融合下的Spark更具魅力...
views 1695
随着移动互联时代的到来,人们的双手得到解放,因为通过智能手机APP和触摸屏就可以彻底解决交互性和易用性的问题,这也使用户行为数据呈现爆炸性增长。大数据技术可以帮助我们对海量的数据进行加工分析,了解用户的行为特征,以及他们对服务的期待,从而使用户得到更好的服务体验。 Hadoop 和Spark都是大家...
美国大数据工程师面试攻略有哪些?
views 3164
大家好,我是来自硅谷的董飞,应国内朋友邀请,很高兴跟大家交流一下美国大数据工程师的面试攻略。 个人介绍 先做一个自我介绍,本科南开后,加入了一个创业公司kuxun,做实时信息检索,后来进入百度基础架构组,搭建了Baidu App Engine的早期版本,随后去Duke大学留...
亚信张灏:打通各行业数据壁垒 让大数据变现畅通无阻...
views 2073
大数据时代已经到来,企业所拥有的数据日益激增,如何更好地挖掘数据价值,进而指导业务发展,产生更高效益,成为企业关注的焦点和追求的方向。2014中关村大数据日上,亚信提出了大数据资产的概念,及帮助合作伙伴提升大数据资产价值的最佳实践。借此机会,CSDN专访了亚信大数据事业部总经理张灏,请他分享了亚信对...
云计算背景下的大数据时代来临
views 1807
数据中心正在成为新时代的“信息电厂”,成为知识经济的基础设施。过去一年,“大数据”正在成为一个热门话题。 半个世纪信息技术的发展,主要解决的是云计算中“结构性”数据的存储、处理与应用。“结构性”数据的特征有如你到银行去存取款,银行的计算机系统记录着你的名字,在名字之后是你存取款的数量、时间、类型等信...
大数据拼精准 可否触动电商个性营销神经...
views 1473
今日之电商诸侯争霸,可谓火药味甚浓,更推进着产业前进步伐。古语有云:长袖善舞,多钱善贾,意指有所依靠,事情容易成功。随着大数据所爆发出的巨大潜力,在如今的互联网经济时代,玩电商的“有才有财”企业,正在用大数据思维与技术影响着企业业务决策和商业推广思路。可以预测的是,互联网平台大数据分析,正如利剑出鞘...
12大编程语言收入排行榜-技术博客-@大数据资讯...
views 2040
计算机软件开发或者说程序员工作已经成为收入最高的职业之一。 BI最近的一份报告显示,近两年美国软件工程师的平均年薪已经接近10万美元(下图),与之相比欧洲的软件工程师的收入要少得多,平均年薪月5.5万美元,不过比去年同期增长了9%,呈现上升势头。 但值得注意的是,不同编程语言技巧的市场价值不同,...
GFS(Google File System)介绍 — 大数据云计算时代...
views 2174
Google文件系统(Google File System,GFS)是一个大型的分布式文件系统。它为Google云计算提供海量存储,并且与Chubby、MapReduce以及Bigtable 等技术结合十分紧密,处于所有核心技术的底层。由于GFS并不是一个开源的系统,我们仅仅能从Google公布的技...
为什么社交网络中数据翻页技术复杂-技术方案...
views 1504
最近讨论的一个传统的问题,问题本身比较简单,针对key-list类型的数据,如何优化方案做到性能与成本的tradeoff。Key-list 在社交产品及面向用户的产品中非常普遍,如一个用户的好友关系 {“uid”:{1,2,3,4,5}},表示某个uid有1,2,3,4,5好友;一条微博下面的评论i...

声明: 本文由( 爱说云网 )原创编译,转载请保留链接: 在Docker容器之间拷贝数据:原理与操作示例

在Docker容器之间拷贝数据:原理与操作示例:等您坐沙发呢!

发表评论


读者排行