Docker初体验(一) - Docker Vs VM

最近公司在创建一个内部使用的小应用,尝试使用了Docker这个已经被热炒很久的Devops神器, 部署了Jenkins,应用和数据库的服务,体会到了一处打包各处运行的便利。刚开始使用Docker, 有一种深深的感觉,它是一个轻量的虚拟机,再比较一番,它还是跟虚拟机有本质的区别。

Docker并不是轻量的虚拟机

因为Docker和虚拟机都为应用提供隔离的运行环境,并且由于Docker的易用性,很容易把它看成是轻量的虚拟机。但是它们在基础架构上是完全不同的。

要说明这个,我找了一个例子。我们可以把虚拟机看成是独栋别墅,作为别墅,它必须有自己的通风,供热和电力系统等基础设施,同时还有必须的卧室,客厅,洗手间和厨房等。如果觉得客厅房间不够,那么你不能共享这些基础设施,添加一个新的房间,而是要重新买一个房间足够的别墅。相比而言,docker容器更像是高层住房中的公寓,它们共享整个建筑的基础设施,可以在一栋住宅中拥有各种不同的户型(运行各种不同镜像的容器)。

从上面的比较中我们可以看到,它们虽然都是为应用提供独立的运行环境,但是他们的构建理念是完全不同的,虚拟机是要在硬件上隔离出完整操作系统的方方面面,但是docker容器是共享操作系统基础设施,并在docker主机上运行打包好运行环境的应用。所以docker并不是一个虚拟机技术,而是一个应用交付技术。在虚拟机的世界中,抽象的单位是一个包含应用代码和依赖资源的虚拟机,它打包应用在物理主机上运行依赖的所有资源,生成一个可以在各种主机上运行的二进制产品。在Docker的世界中,抽象的单位是应用,更准确的说是一个服务,一般一个应用都是由多个服务组成。基于Docker容器,我们的应用能更容易的被拆分成细粒度的组件,这种技术会改变我们应用架构的方式。

Docker容器的备份

我们怎么备份Docker容器呢?其实我们并不需要备份容器。在使用Docker时,应用数据并不在保存在容器中,它存储在位于运行docker的服务器上的命名卷(volume)中[一块物理存储空间], 卷可以在不同的容器间共享,我们只需要备份这些卷,并不需要备份容器。所以理想情况下,容器是无状态并且不可修改的。如果我们想更新应用,需要做的是更新Docker镜像,同时基于新的镜像重新创建容器,创建容器只需要花几秒钟。

最后

通过以上面的比对,我们可以发现Docker和VM是针对解决不同问题而提出的技术,一个是打包应用运行环境在各种操作系统上运行,一个是打包了部署应用的整个操作系统,并运行在各种服务器上。他们不仅不是一个有你没我的替代关系,而是互相结合可以发挥更大威力的组合。有了Docker,它将改变部署应用的方式,可以方便的配置出不同的运行环境,随着配置应用运行环境的成本降低,我们可以将应用拆解成粒度更小的服务,改变我们设计系统的方式。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Docker — 云时代的程序分发方式 要说最近一年云计算业界有什么大事件?Google Compute Engi...
    ahohoho阅读 15,635评论 15 147
  • 写这篇文章主要是为了今后毕业论文素材上的整理,同时对docker进行巩固温习。大纲: docker简介docker...
    胡图仙人阅读 7,500评论 2 96
  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 10,544评论 0 120
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,967评论 19 139
  • 曾经有一位朋友告诉我,她单位一对夫妻感情不和,但不离婚,各找各的情人,各玩各的。当初听了这话惊讶的下巴壳都要掉了,...
    花落无言之花开无语阅读 472评论 0 0