返回
首页 > 生活常识

docker是干什么的(Docker的前世今生介绍)

时间: 2023-05-21 本站作者

要聊Docker是什么,首先要聊聊虚拟化。虚拟化分为硬件级虚拟化和操作系统级虚拟化。很多同学用过的虚拟机,就是硬件级虚拟化。指的是运行在硬件之上的虚拟化技术。

都过年了,还不知道Docker是怎么回事?5分钟告诉你它的前世今生!

大概9年前,2010年,上图的年轻人Solomon Hykes,在旧金山成立了主攻PaaS的公司,起名dotCloud。

PS : PaaS可理解为,为软件开发提供相关的配套设施,PaaS通常提供构建服务SDK,并实现云端自动部署与测试,包括语言环境,运行环境,存储等基础服务,其中涉及多种框架、语言(如PHP, MySQL, Node.js, MongoDB等)。

当dotCloud把基于LXC(Linux Container),即用Go开发的的PaaS平台做到极致的时候,理论上dotCloud已经摆脱环境限制。

在当时PaaS激烈竞争环境下,善于洞察的Solomon发现其基于LXC的技术具有快速,高效协作开发与部署的捷径,为了生存,不得已决定开源核心引擎(Apache2.0协议), 非常意外,该技术受到 PaaS大佬(Amazon, Google, IBM, MS, RedHat, VMware)的追捧及认可。

Solomon顺势而为,直接于2013年将公司更名为Docker,并发布Docker 0.1版本,并于2014年把docCloud的PaaS服务平台出售,至此拉开了基于云计算平台的发布产品变革序幕。

那Docker到底是什么?为何这么受追捧?

要聊Docker是什么,首先要聊聊虚拟化。虚拟化分为硬件级虚拟化和操作系统级虚拟化。

很多同学用过的虚拟机,就是硬件级虚拟化。指的是运行在硬件之上的虚拟化技术,它的管理软件也就是我们通常说的Hypervisor或者Virtual Machine Monitor。

它需要模拟的就是一个完整的操作系统,也就是我们通常所说的基于Hyper-V的虚拟化技术,VMWare, Xen, VirtualBox,亚马逊AWS和阿里云都是用的这种技术。

Docker则是操作系统级虚拟化中最流行的一种实现,也称为容器化技术。操作系统级虚拟化是运行在操作系统之上的,它模拟的是运行在操作系统上的多个不同进程,并将其封装在一个密闭的容器里面。

这么说还是没懂,能不能简单解释解释?

努努力试一下。

1、 在没有虚拟化的时候,如果我们想搭建一个服务器 ,我们列一下我们要做的事情:

购买一个硬件主机

安装操作系统

配置环境

部署应用

缺点是,当时一个主机只能部署一个应用。当我们需要迁移的时候,又要重复上面的步骤。在此基础上,虚拟化技术出现了。

2、虚拟化技术在本地操作系统的基础上 加了一层 Hypervisor层,Hypervisor是一种运行在物理服务器和操作系统之间的中间软件层,可以虚拟化硬件资源,例如cpu、硬盘、内存资源等。

然后我们可以基于通过虚拟化出来的资源之上安装操作系统,这也就是所谓的虚拟机。

但一个技术必定有它的优缺点。

虚拟化的优点是。

资源池——一个物理机的资源分配到了不同的虚拟机里

很容易扩展——增加物理机或者虚拟机即可,因为虚拟机是可以复制的

很容易云化——亚马孙AWS,阿里云,谷歌云等

虚拟化的缺点是。

我们每创建一个虚拟机的时候,都会创建一个操作系统,一个操作系统最少占几G的资源。当虚拟机越多,资源浪费就会越多。

3、容器技术解决了这一痛点,但是这并不是他产生的主要原因。主要的原因是解决 开发和运维 人员环境不一致而导致的开发效率大大降低的问题。

容器可以帮我们把开发环境及应用整个打包带走,且打包好的容器可以在任何的环境下运行。

现在可以解释容器了,容器是“对软件和其依赖环境的标准化打包”。

容器可以实现。

应用之间相互隔离

共享一个OS Kernel(解决了资源浪费的问题)

可以运行在很多主流操作系统上

最后,再来看看最典型的docker应用场景吧

你开发软件的时候用的是Ubuntu,但是运维管理的都是Centos ,运维在把你的软件从开发环境转移到生产环境的时候就会遇到一些Ubuntu转Centos的问题,比如:有个特殊版本的数据库,只有Ubuntu支持,Centos不支持,在转移的过程当中运维就得想办法解决这样的问题。

这时候要是有Docker你就可以把开发环境直接封装转移给运维,运维直接部署你给他的Docker就可以了。而且部署速度非常快。

猜你喜欢

版权所有 Copyright©2023 餐饮美食网 版权所有

粤ICP备15109582号

联系邮箱:187348839@qq.com