docker由来

没有虚拟化技术的原始年代

准备一台物理服务器,然后在物理服务器上安装一个操作系统(Operating System),有了操作系统之后,便在操作系统上安装运行我们的应用程序,这个过程可以用下面的图来表示:
在这里插入图片描述
物理服务器部署应用示意图

那么,这种方式有什么问题呢?其实,在物理机上部署应用有以下几个缺点:

部署非常慢:因为我们得先准备硬件服务器,接着还要安装操作系统,然后再部署应用程序,而且应用程序还有很多的依赖软件,所以这个过程是比较慢的。
成本非常高:主要是物理器成本太高,即使是部署一个简单的应用,也需要一台服务器。
资源浪费:如果应用太简单,也容易浪费硬件资源,比如CPU和内存
迁移和扩展太慢:如果需要迁移应用,或者扩展应用,都要再准备其他的物理服务器,过程很麻烦,也很慢。
那么有什么办法可以解决这些问题呢?答案便是虚拟化技术

使用虚拟机部署应用的年代

什么是虚拟化技术

谈到计算机的虚拟化技术,我们直接想到的便是虚拟机,虚拟机允许我们在一台物理计算机模拟出多台机器,简单地理解,虚拟化技术就是在一台物理计算机上,通过中间虚拟软件层Hypervisor隔离CPU、内存等硬件资源,虚拟出多台虚拟服务器,这样做的话,一台物理服务器便可以安装多个应用程序,达到资源利用的最大化,而且多个应用之间相互隔离,如下图所示:
在这里插入图片描述
虚拟机上部署应用示意图

虚拟机的优点

可以把资源分配到不同的虚拟机,达到硬件资源的最大化利用
与直接在物理机上部署应用,虚拟机更容易扩展应用。
云服务:通过虚拟机虚拟出不同的物理资源,可以快速搭建云服务。
虚拟机的不足之处

虚拟机的不足之处在于对物理服务器资源的消耗,当我们在物理服务器创建一台虚拟机时,便需要虚拟出一套硬件并在上面运行完整的操作系统,每台虚拟机都占用许多的服务器资源。

docker 是什么?

相对于虚拟机的笨重,Docker则更显得轻量化,因此不会占用太多的系统资源。

Docker是使用时下很火的Golang语言进行开发的,其技术核心是Linux内核的Cgroup,Namespace和AUFS类的Union FS等技术,这些技术都是Linux内核中早已存在很多年的技术,所以严格来说Docker并不是一个完全创新的技术,Docker通过这些底层的Linux技术,对Linux进程进行封装隔离,而被隔离的进程也被称为容器,完全独立于宿主机的进程。

所以Docker是容器技术的一种实现,也是操作系统层面的一种虚拟化,与虚拟机通过一套硬件再安装操作系统完全不同。
在这里插入图片描述
docker容器与系统关系示意图
Docker与虚拟机之间的比较

Docker是在操作系统进程层面的隔离,而虚拟机是在物理资源层面的隔离,两者完全不同,另外,我们也可以通过下面的一个比较,了解两者的根本性差异。

在这里插入图片描述

发布了298 篇原创文章 · 获赞 6 · 访问量 8571

猜你喜欢

转载自blog.csdn.net/qq_23929673/article/details/103533121