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

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

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非常方便。

相关文章

2014中关村大数据日,数据资产驱动产业创新...
views 1933
大数据作为价值万亿的可再生之矿,作为社会资产和生产要素,影响国计民生、产业再造和民族复兴。如何对数据资产的管理、变现和驱动产业创新,决定企业的竞争能力,产业的未来和国家竞争力。 围绕这个话题,政府领导、行业领袖、技术专家怎么看?产业联盟,领军企业和产业代表怎么想,又怎么做?2014中关村大数据日,我...
大数据基础知识:分布式计算、服务器集群-...
views 2009
大数据的数据量是非常大的,都是达到了PB的级别。在这么大的数据当中,包括了结构化数据和非结构化数据。其中结构化数据包括了数字、符号等数据,非结构化数据包括了文本、图像、声音、视频等数据。这让大数据在存储和处理的过程当中就不能用传统的数据库关系去完成了。在大数据里面,最有价值的信息就在这里面,所以这个...
Amazon发布免费的AWS EC2 Container服务,且支持Docker...
views 1913
近日,在AWS re:Invent云计算大会上的第二场主题演讲中,Amazon的CTO Werner Vogels宣布发布AWS EC2 Container服务。目前,AWS EC2 Container服务预览版免费提供于开发者,开发者可以在官网进行注册使用。这是一项高度可扩展、高性能、免费的容器...
11·11单日1400万单的背后:京东技术首次全解密...
views 2086
随着移动终端和移动应用的发展将互联网的边界从空间和时间维度无限延伸,企业互联网的构建也成为2014年企业IT的一大主题,互联网用户体验的保障则是企业面临的一道坎。在此背景下,阿里、京东等中国电商巨头如何通过技术创新来保证海量订单压力下的用户体验,成为业界研究的热门对象。 对于京东的技术团队而言,由于...
赞!Docker生态系统常用组件介绍 开启快乐开发之旅...
views 3077
Docker已经为开发者和管理员提供一个简单的平台来创建和部署可扩展的应用。本篇文章是介绍Docker生态系统的系列文章的第一篇在这个系列中,作者将探索Docker如何与其他组件整合在一起,并用它们提供的工具集来便捷地提供高可用性的分布式系统。本篇文章不仅从概念上介绍了容器化、服务发现和全局配置存储...
下一个云计算的大事件:谷歌拥抱Docker...
views 2207
谷歌对当今最热门的云计算技术Docker给予了相当大的支持。在谷歌看来,Docker也是一个足以改变人们创建软件方式的东西,它能让任何程序开发人员更轻松地、即刻地体会到海量计算性能的优势。 北京时间6月10日消息,据Wired报道称,谷歌对当今最热门的云计算技术Docker给予了相当大的支持。“...
Docker应用实践:一个简单的Java EE&Docker示例...
views 2527
学习Docker的最好办法就是迅速在工作中应用它,本文作者使用Docker部署了一个Java EE应用,非常简单和方便。需要注意的是,由于作者写作时本地网络有问题,所以Dockerfile中很多的资源都没有从网络下载,你再实践时,可以尝试修改。学习快乐 :) 本文中,我们将会把Java EE和...
大数据时代,课堂应如何创新
views 2228
随着大数据时代出现,有人曾这样预言,随着MOOC、微课、翻转课堂等基于网络的教学形式的出现,我们这些中小学教师弄不好是会下岗的。 这也许不是危言耸听。 当我们孩子天天拿着IPAD,随时随地搜索、了解各种知识、资讯时,他们是这个互联网时代的原住民,而我们从“50后”到“80后”的教师,充其量只是网络世...

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

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

发表评论


读者排行