docker容器和虚拟机的区别,docker比虚拟机优势

在实际的软件开发过程中,我们需要多的环境:如开发环境、测试环境、沙箱环境、自动化环境、预发环境、生产环境……这么多的环境要如何维护呢?是一台机器部署一个应用,还是一台机

本文最后更新时间:  2023-03-26 18:45:38

在实际的软件开发过程中,我们需要多的环境:如开发环境、测试环境、沙箱环境、自动化环境、预发环境、生产环境……这么多的环境要如何维护呢?是一台机器部署一个应用,还是一台机器部署多个应用?多个应用之前又要怎么隔离呢?这时候就需要使用到虚拟化技术了。

最早的虚拟化技术是虚拟机,所谓虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。这个听起来有些绕口,其实就是通过软件的隔离,让你的电脑能够同步安装多个完整的计算机系统,这里说的软件比较有名的就是VMWare和OpenStack,通过VMWare或OpenStack,我们在原来的电脑中模拟出一台甚至多台“子电脑”出来。这些子电脑可以是Mac、windows、linux中的任意系统、任意版本,只你软件支持且你能找到镜像。在“子电脑”里,你可以和正常电脑一样运行程序,例如打开word。各个子电脑之间的软件硬件都是相互隔离的,互不影响的。

虚拟化有哪些优势?

虚拟机能够让一台机器像多台机器一样运行,这意味着您需要的服务器更少,并且还可以最大限度地利用您拥有的服务器。这种效率的提高能够节省硬件、冷却和维护成本。借助虚拟化,我们可以在同一台机器上运行多种类型的应用、桌面和操作系统。

弃用虚拟机

但今天我们要说的是,我们要弃用虚拟机,投入容器化的怀抱,为何?LXC,就是Linux容器虚拟技术(Linux container),它是Docker容器技术的基础,Docker轻量级的虚拟化,虚拟机虽然可以隔离出很多“子电脑”,但占用空间更大,启动慢。而容器技术恰好没有这些缺点,它不需要虚拟出整个操作系统,只需要虚拟一个小规模的环境(类似“沙箱”)。

传统虚拟机在硬件层面上实现虚拟化,需要有额外的虚拟机管理应用和虚拟机操作系统,而Docker容器是在操作系统层面上实现的虚拟化,直接利用本地主机的操作系统,因此更轻量。

Docker容器本质上是宿主机上的一个进程。Docker 通过命名空间实现了资源隔离,通过 cgroups实现了资源的限制,通过写时复制机制(copy-on-write)实现了高效的文件操作。能够实现更快速的交付和部署;更高效的虚拟化;更轻松的迁移和扩展;更简单的管理。

举个简单的例子:传统我们盖房子需要木料、水泥、砖头……,需要选好施工地,并请工人来进行一定时长的工作。等下次我们需要在一个新的地方重新盖房子,就又要重新来一次。Docker将已经盖好的房子,通过魔法背包打包成镜像,里面只是房子模型,没有任何的实际生活用品以保证轻量,等到了一个新的地方,我们只要取出背包中的镜像,房子就还原回来了,想要什么房子就用什么镜像,实现“Build once,Run anywhere(搭建一次,到处能用)”。

好了,本期就介绍到这,更多知识我们下次再讲。

Docker容器是什么?它比虚拟机强在何处?

Docker容器是一个开源的应用容器引擎,可以让开发者用统一的形式打包其自身的应用,然后包装到一个可以移植的容器中,随后发布到任何可以安装Docker引擎的服务器上(比如主流的Linux机器或者是Windows机器),当然也可以实现虚拟化。Docker容器几乎没有性能开销,可以很容易的在机器和数据中心运行,其最大的特色就是不依赖任何系统,框架甚至是语言。
由于容器是进程级的,相比于虚拟机有着很多的优势
一:启动速度快:由于容器里面的应用软件,直接就是底层系统的一个进程,而不是虚拟机内部的进程。所以启动容器时,不是启动一整个操作系统,速度就快了很多。
二:资源占用少:相比于虚拟机而言,容器只占用需要的资源,不会去占有无效的资源,而虚拟机则是一个完整的操作系统,不可避免的占用了所有资源。
三:体积小,轻量级:容器只需要包含用到的组件,对比于虚拟机,容器文件要比虚拟机小很多。
四:方便移动:容器技术最重要的就是为不同的主机上运行服务一个轻便,一致的格式。容器的格式更加标准化且方便客户对工作负载的迁移,有效避免单一的平台提供商。

Docker是什么?它比虚拟机强在哪里?

Docker是一个开源的应用容器引擎,可以让开发者将自身的应用或者软件移植到镜像中,然后发布到任何一个Windows机器或者Linux机器上,当然Docker也可以实现虚拟化。而一个完整的Docker是由:Docker Client客户端,Docker Daemon 守护进程,Docker Image 镜像和Docker Container 容器来组成的。容器是完全采用沙箱机制,相互之间不会有任何接口。
而Docker比虚拟机强大的地方在于:
第一:启动时间:Docker容器是秒级启动的,而虚拟机时分钟级启动,在启动速度方面,Docker就能够完美地碾压了虚拟机。
第二:占用空间和性能:在占用空间和性能方面,Docker容器镜像比虚拟机要小得多且性能要比虚拟机更强。
第三:使用要求:虚拟机是基于硬件的虚拟化,其CPU也要有支持虚拟化的支持,Docker共享宿主机内核,可运行在主流的Linux,不用考虑CPU是否支持虚拟化技术。
温馨提示:内容均由网友自行发布提供,仅用于学习交流,如有版权问题,请联系我们。