点击上方蓝色“3分钟云计算”关注我们,设个星标,每天学习云计算知识
有瓜友觉得上篇文章👇太干了,咽不下去,那今天我们来点湿的。 Docker 公司原名dotCloud, 位于美国旧金山,主要提供基于PaaS(Platform as a Service, 平台即服务)的云计算服务。但Docker 产品开源后实在太火,公司也就改用Docker 命名了,目前市值高达13亿美元。这应该是创业公司中最成功的案例。就下面这位大神,Solomon Hykes
Docker 自2013年开源以来一直都是云计算领域的热点,加之Google、Red Hat、微软、IBM的加持,发展迅速。Red Hat 在RHEL 6.5 中就添加了对Docker 的支持。但是Docker 公司一直找不到好的盈利模式,CEO换了一茬又一茬,推出的Swarm容器编排产品也败给了Kubernetes。 创始人 Solomon Hykes 也正式从 Docker 公司离职,不再担任公司的日常运作工作。
去年12月份,Kuberentes 宣布自 v1.20 起放弃对Docker的支持,改用由Google, Red Hat 联合推出的CRI 容器运行时。无论Docker 公司的命运如何,docker 产品对整个云计算行业的贡献是不可磨灭的。
Docker 是一个容器引擎,也叫容器运行时,基于LXC(Linux Container,后来改用了自己的libContainer),可以让开发者把他们的应用程序以及依赖包放到容器中,然后发布到任何主流平台上,比如Linux, Mac, Windows。这个容器管理引擎大大降低了容器技术的使用门槛,轻量级,可移植,虚拟化,语言无关,写了程序扔上去做成镜像可以随处部署和运行,开发、测试和生产环境彻底统一了,还能进行资源管控和虚拟化。
在Docker 之前,开发者都深陷软件环境的配置之苦,不同环境下的配置问题层出不穷,想用一款开源软件,结果配置好久都运行不起来,查看网上的各种教程,还是不行,最后不得不放弃使用。环境差异,使原本简单的问题复杂化,拖慢我们的开发进程。拿来主义对开发、运维、测试人员是件好事,开箱即用,让我们把有限精力放到自己专注的事情上。
或许有人会说,用虚拟机啊,的确,在Docker之前,业界的宠儿是虚拟机。但是虚拟机太笨重了,对资源也是一种浪费。一台服务器可以运行十几个虚拟机实例,但是现在它可以运行几百个Docker 实例,而且秒级启动,不香吗?可以简单理解为Docker就是轻量级的虚拟机。
Docker是容器的一种,容器是一种轻量级的虚拟技术,而虚拟机则是重量级的虚拟技术。如下图,左边是Docker容器, 右边是传统虚拟机。
虚拟机是一种基于硬件的虚拟技术,它完全虚拟一整套物理主机,包含CPU、内存、磁盘、网卡等硬件设备,给用户呈现的就是一个物理主机的特性。用户可以在虚拟机里面安装各种操作系统,比如,在Mac上安装一个虚拟机,在虚拟机里安装Windos系统,这样这个Mac电脑就是双系统,也可以在Windows上安装虚拟机,在虚拟机里面安装Linux系统。
容器是一种基于操作系统的虚拟技术,简单来说,容器将软件应用程序与操作系统分离,它运行在操作系统之上的用户空间,所有的容器都共用一个系统内核。容器引擎提供进程级别的隔离,让每个容器都像运行在单独的系统之上,但又能够共享很多底层资源。比起虚拟机,容器更加轻量、快速、易于管理。除了Docker,常见的容器还有Solaries Zones、BSD jails和LXC等。
当然,容器和虚拟机各有各的优点,谁也不是谁的替代品,只是在不同的需求下各有优势。那么既然在Docker之前已经有了容器技术产品,为啥Docker一经问世还这么火呢?
主要是Docker 对容器进行了一些改进、优化,如下:
介绍了这么多那么Docker具体做什么呢?
传统的软件产品开发一般是这样的
1、确定产品定位和需求,确定首次迭代的范围。
2、制作界面原型。
3、技术选型,然后根据技术选型为每个开发者搭建开发环境和技术栈,例如 Java 环境、Python 环境、Ruby 环境、数据库、中间件等等。
4、构建基础技术框架和服务,包括日志、存储、消息、缓存、搜索、数据源、集群扩展等等。
5、模拟用户容量,构建测试环境。
6、开始编写真正的业务代码,实现产品功能。
7、迭代开发/测试,生生不息,周而复始,直到头发掉光为止……
等上了PaaS,也就是如火如荼的云计算,就可以省略3、4、5步了,传统软件开发模式从瀑布模式转向敏捷开发,降低开发成本,大幅提高了企业的效率,可以更快、更好、更强的推出自己的软件产品,在如今的激烈竞争中脱颖而出。
20世纪60年代以前的海运,香蕉和钢材可能放到一起,不仅托运人担心货物会发生挤压损坏,而且港口码头装卸各式各样的货物非常麻烦,效率及其低下。最后在美国陆运运输公司的推动下,制定了国际标准集装箱来解决这个棘手问题。所有的货物都可以通过集装箱指定的方式打包进集装箱内部,货物之间的相互影响被集装箱隔绝。集装箱是一个货物集对外的标准接口,无论是码头、汽运、车运,处理的都是集装箱,这极大的加快了货物的装卸、堆积、运输速度,提高了运输的安全性,降低了运输成本。
在软件应用开发中,我们期待有一种东西,可以像集装箱一样方便的打包应用程序,使其相互隔离,在各种环境下运行,在各种平台之间易于移植。Docker 正是这个集装箱。Docker,改变了整个软件行业,称其为开源英雄丝毫不为过!