数智资源网
首页 首页 大数据 查看内容

Docker的数据持久化问题

木马童年 2019-4-13 21:15 117 0

8月18日的LinuxCon 与 ContainerCon大会中,来自Docker的Jerome Petazzoni发表了题为“Docker, Containers & Security: State Of Union”的演讲。Jerome加入Docker之前,在VOIP,嵌入式系统,虚拟主机,虚拟化和云 ...

8月18日的LinuxCon 与 ContainerCon大会中,来自Docker的Jerome Petazzoni发表了题为“Docker, Containers & Security: State Of Union”的演讲。Jerome加入Docker之前,在VOIP,嵌入式系统,虚拟主机,虚拟化和云计算等多个技术领域都有过工作经验。

在大会前夕,Jerome接受了Ashnik CTO Sandeep Khuperkar的采访,采访中Jerome对Docker提出了深刻的见解,尤其是Docker容器的数据持久化问题,以及如何使用Docker容器来传输数据。

1.什么是容器?在如此多样的的容器技术中,Docker有哪些不同?

从一个高层次的角度看,容器就像是轻量级的虚拟机。你可以在一个容器中安装任何东西,独立于(不影响)其他容器和主机环境。每个容器都有自己的网络堆栈,进程(PID)空间,文件系统等。并且他们占用的空间明显小于VM(虚拟机);容器启动更快,需要更少的内存和硬盘空间。这是因为从底层来看,容器只是主机上的一个普通进程,使用namespace和cgroups等内核特性实现隔离。启动一个容器就如同启动一个普通的UNIX进程;创建一个容器就像克隆一份copy-on-write文件系统的快照(无论是在时间还是磁盘使用上来说,都是非常便宜的)。

Docker之所以不同于其他的容器技术,是因为他不仅仅是容器引擎,Docker包含了Docker Engine(运行容器);Docker Hub(一个公共的随时可用的容器镜像仓库,也可以用来储存用户的自定义镜像);一个囊括了Docker Compose、Docker Machine、Docker Swarm等工具的生态系统。并且所有这些都是开放的,都有开放的API。

2.Docker与Hypervisor有哪些不同?

有人说Docker是“hypervisor for container”,但很多纯粹主义者并不赞成这个比喻,虽然hypervisor管理着VM,而Docker管理着容器,但是两者深层的技术细节大相径庭。当hypervisor启动一个虚拟机时,它创建了虚拟硬件,并利用了具体的CPU指令或特性,例如VT-x, AMD-V或者privilege level(权限等级)。而当Docker创建一个容器时,利用了内核特性,比如namespace和cgroups,而不依赖特定的硬件特性。

这意味着容器的可移植性更强,因为它们在物理机与虚拟机上运行是完全一样的;但某些情况下可移植性又会大打折扣,因为容器会使用到它的主机内核。比如,你不能在Linux上运行Windows容器(除非你的Linux内核可以执行Windows二进制文件)。

3.如何解决Docker的持久化存储问题?如何连接数据与Docker容器?

Docker有“Volume”的概念,这是容器和主机之间的共享目录。在虚拟机上也有类似的概念叫“共享文件夹”,不同点在于容器不要求任何特定的设置,并且没有任何开销,因为它们使用绑定挂载。

当有数据存储在磁盘上(无论是实际磁盘,或磁盘阵列,或挂载的网盘等),最简单的选择是将数据挂载在容器主机上,然后通过“Volume”机制暴露给容器。

Docker还有一个(全新的类型,还在试验中的)plugin机制,即一个容器为其他容器提供存储。这个容器是Ceph, Gluster或者任何其他的存储集群的一员,并挂载在另一个容器上。

4.当Docker容器在不同的机器上启动时,如何使用Docker容器移植数据?

就像在容器诞生前我们做的一样:网络存储,分布式文件系统,数据传输或者远程同步备份,Unison跨平台文件同步工具等等。

但使用容器会有两个优势:

首先,通过容器的方式访问数据,假设我从DRBD切换到Ceph,容器并没有必要去了解它们;事实上,同样的容器在本地存储和分布式存储的运行方式是一样的。

另一个优点是来自新的plugin机制,通过应用容器与储存容器的完全隔离,使数据的访问更简单。

5.如何确保Docker容器在运行过程中的数据变化,被更新到原容器镜像?

Docker提供了API用来比较容器与其原始版本,并从现有的容器中创建一个新的镜像;这些API对应的命令行是 "docker diff" 和 "dockercommit"。

6.Docker容器如何帮助构建高可用的解决方案?

当构建一个高度可用的系统时,大家通常会列出一个非常长的清单列表。Docker使得这些步骤的执行更加容易:例如,确保您部署在相关机器上的软件的一致性。Docker并不是像变魔术一样解决问题,却会让很多事情变得更容易,速度更快,更可靠——就像是使用包管理工具会比从源代码编译更方便一样。

7.Docker在企业客户生产环境中的采用率不断提高,你如何看待这件事?

企业在采用Docker之前一般会经历这样的过程:

虚拟化 云计算 容器技术 存储问题 分布式文件系统 数据传输
0
为您推荐
HIVE数据仓库完美实战课程,资源教程下载

HIVE数据仓库完美实战课程,资源教程下载

课程名称【快速掌握HIVE视频教程】HIVE数据仓库完美实战课程课程目录├第一周:hive基…...

尚硅谷大数据Flink技术与实战,资源教程下载

尚硅谷大数据Flink技术与实战,资源教程下载

课程名称尚硅谷大数据Flink技术与实战课程目录理论_Flink基础 001__Flink理论_Flink…...

廖雪峰-2019大数据分析精品资料价值1980元,资源教程下载

廖雪峰-2019大数据分析精品资料价值1980元,资源教程

课程介绍:廖雪峰大神历时3个月打磨出来的《数据分析必备技能》的视频学习资料,由浅…...

尚硅谷-大数据项目之电商数仓教程下载

尚硅谷-大数据项目之电商数仓教程下载

课程介绍:本课程以国内电商巨头实际业务应用场景为依托,对电商数仓的常见实战指标以…...