Docker的前世今生

Docker的前世今生

Docker起源于dotCloud云服务公司2013年用Go语言实现的容器引擎开源项目,因为其对开发、测试、运维的便利,几年内便从虚拟化领域火到了技术领域,越来越多的开发者和大型技术公司被其吸引,Docker的生态稳步扩大。

Docker功高盖主,本以云服务为核心业务的dotCloud公司反倒是Docker越来越火,后公司改名为Docker.Inc,All in做Docker相关的开发与维护。

如果你在Github上搜索Docker,会发现是找不到的。Docker项目名称已经改为moby。

在这里插入图片描述

云时代

在早期,硬件资源相对昂贵,一台计算机往往身负多职,几乎所有的程序、环境、运行时都集中在一台计算机上。随着程序规模和复杂度的提高,更新速度不断加快,运行所需的环境、依赖、硬件资源呈指数级上升。就如同台式机到笔记本,笔记本到手机一样,部署在服务器上的程序也趋于小型化与模块化,而在当时没有很好的部署解决方案的时期,不同的软件会产生截然不同的部署要求,这如同早期前端开发中适配各种浏览器环境一样,让开发、测试、运维都十分头疼。

同时,互联网的高速发展,服务集群和分布式称为主流,但碍于硬件资源限制,单个应用对应单台服务器的老式方案显然不现实,这就到了虚拟化技术大展身手的时刻了。

通过虚拟化技术,环境搭建更为便捷,开发者们可以更多的将时间用于核心业务和代码实现中。但对于愈发小型精密的应用来说,容器技术对比虚拟机技术更为合宜。

Docker

Docker主张应用即容器,把应用作为单位。当然也可以一个容器部署多个程序,但这就背离了Docker初衷了。

组成

Docker是易用且强大的生产力工具。其组成分为三个部分:

命名空间( Namespaces )
	 namespace是Linux core在 2.4 版本后逐渐引入的一项用于运行隔离的模块,主要针对隔离进程、网络、文件系统等虚拟资源
	 在许多编程语言中都存在命名空间的概念,它们的作用也基本上一致:内聚并解耦
	 Linux Namespaces 可以分为很多具体的子系统,如 User Namespace、Net Namespace、PID Namespace、Mount Namespace 等等
	 Docker通过Linux PID Namespace实现了容器内进程的隔离,内部被隔离的进程位于独立的空间内,与其它容器内的进程互不冲突
	 
控制组( Control Groups )
	简称CGroups,是 Linux core在 2.6 版本后逐渐引入的一项对计算机资源控制的模块,包括了资源隔离和资源分配。它基于OS实现,主要针对硬件资源隔离
	虚拟化除了隔离程序外,也需要隔离硬件资源,除了隔离之外,CGroups也可以对隔离的资源进行资源分配,指定任意环境对任意资源的占有率
	
联合文件系统( Union File System )
	Unio File System能够同时将多个不同的文件挂载到同一个目录内,能同时将切好的菜放到一个盘子里,实现虚拟环境下的快速启动和停止
	其升级版本,Advanced Unio File System(AUFS),可以像git一样,判断更新的文件与原文件不同的地方并只更新不同的地方,能够降低文件系统空间占用

与虚拟机方案对比

如果需要搭建LAMP结构的服务,在虚拟机的方案下,需要先安装一个Linux OS,然后基于这个OS分别安装Apache,MySQL和PHP;而在Docker中省略OS层和HyperVisor层,Apache、MySQL,PHP分别对应一个容器,其所在的虚拟OS共享于宿主机OS,即基于原生的操作系统执行。

简单来说,可以把虚拟机比作重机枪,把容器比作手枪

     		    虚拟机		  容器
体量级			重量级		 轻量级
速度		  	     慢(分钟级)     快(秒级)
性能			     低			   高
空间消耗   	     大 		   小
最大支持度	     少		       多

关于虚拟机,因为功能丰富,但体积也相对庞大,配置相对繁琐,更适合重量级开发。因为其接近原生OS的速度和多容器支持,Docker则省去了很多繁琐重复的工作,更加轻量化,更适合当下快速开发的节奏。

优点

  • 友好的CI/CD:将原有的工作流添加Docker,对于持续集成(Continuous Integration)和持续交付(Continuous Delivery)更加友好

    Docker程序本地打包=>转移测试=>bug修改=>测试环境部署=>发布至生产环境
    
  • 高可移植性:在本地电脑、虚拟机、云服务器,混合环境都可运行。

  • 更高的资源利用率:Docker轻量且高效,可以很好的适应高密度的中小型部署,节约软硬件资源消耗,提高其利用率

云服务器,混合环境都可运行。

  • 更高的资源利用率:Docker轻量且高效,可以很好的适应高密度的中小型部署,节约软硬件资源消耗,提高其利用率
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值