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

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

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

相关文章

Docker 传奇之 dotCloud
views 1388
2010年,几个大胡子年轻人在旧金山成立了一家做 PaaS 平台的公司,起名为「dotCloud」,这个名字让我想起了微软的「DotNet」。 dotCloud 主要是基于 PaaS 平台为开发者或开发商提供技术服务。什么是 PaaS 呢?PaaS 的全称是 Platform as ...
看大数据如何改变音乐产业
views 1382
行业领导者继续将音乐的版权使用费视为重中之重,认为它才是艺术家们收入的唯一未来。然而,音乐商业化的命运依然前途未卜。有些人认为我们的目标仅是简单地将艺术家的音乐传送到消费者的耳朵里。其他人则认为应该继续由消费者为音乐服务买单。不过,对那些音乐创作者来说,不管他们是签约音乐人还是独立音乐人,订阅模式...
详解大数据的思想形成与价值维度
views 1435
  比如经济上,黄仁宇先生对宋朝经济的分析中发现了“数目字管理”(即定量分析)的广泛应用(可惜王安石变法有始无终)。又如军事,“向林彪学习数据挖掘”的桥段不论真假,其背后量化分析的思想无疑有其现实基础,而这一基础甚至可以回推到2000多年前,孙膑正是通过编造“十万灶减到五万灶再减到三万灶”的数据、利...
百度实时计算平台的实现和应用
views 1744
百度实时计算平台的实现和应用     “大数据”在互联网行业中已是普遍现象,一家公司每天累积的用户行为数据甚至已不能用TB来衡量。海量数据对实时分析和计算提出了更高的要求,实时处理程序必须确保在严格的时间内响应,通常以秒为单位,甚至是毫秒。传统的批量计算模型已无法满足这些要...
云计算支撑大数据 应用实现价值
views 1683
云计算的发展对社会管理和经济发展将产生什么样的影响?大数据时代给政府、互联网公司、IT企业及行业用户带来了哪些挑战和基于?哪些领域是大数据应用的沃土? 云计算作为新一代信息技术的重要发展方向,已被广泛认为是支撑信息化应用和业务模式创新的核心,其技术与产业发展,以及应用的推广普及,对于我国深入推进两...
大数据2015年或成IBM核心业务
views 1357
12月24日消息,据国外媒体报道,随着2014年年终的日子越来越近,IBM的股价却仍然在地位徘徊。过去十年时间里,IBM的收益的增长速度曾经令人惊叹。然而进入2014年之后IBM的业绩就开始衰败,一些市场分析人士对于2015年IBM的表现也并无太高的期许。在笔者看来,IBM在日益激烈的行业竞争中已...
谁在用阿里云?云计算用户须知10个问题...
views 1877
云计算喊了好几年了,笔者很好奇,到底什么样的用户在使用,以及这些用户在采购和使用云计算时是基于一种怎样的场景、需求和心态?   根据工信部电信研究院在其《云计算白皮书》(2014)中披露的统计数据。在全球排名前50万的网站中,约有2%采用了公共云服务,其中80%的网站采用了亚马逊和Rackspace...
2015年度大数据发展十大预测
views 1670
《中国大数据技术与产业发展白皮书(2014年)》针对2015年度大数据发展做了十大预测,他们分别是: 一、结合智能计算的大数据分析成为热点,包括大数据与神经计算、深度学习、语义计算以及人工智能其他相关技术结合,成为大数据分析领域的热点。大数据分析的核心是从数据中获取价值,价值体现在从大数据中获取更...

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

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

发表评论


读者排行