【docker】docker容器和虚拟机的区别

声明: docker不是虚拟机

虚拟机

在这里插入图片描述

从下到上理解
基础设施:可以是个人电脑,或者服务器等
主操作系统
虚拟机管理系统:利用Hypervisor,可以再主操作系统上运行多个不同的从操作系统。
客户机操作系统:假设运行多个相互隔离的应用,则需要使用Hypervisor启动多个客户机操作系统,也就是多个虚拟机。遗憾的是,每个虚拟机自带一套虚拟的硬件和软件系统,他们会消耗很大的cpu和内存
各种依赖:每一个客户机操作系统都要安装多个依赖,
应用:安装依赖之后,就可以在多个客户机操作系统分别运行应用了,这样各个应用就是相互隔离的。

docker

在这里插入图片描述

相比较虚拟机,docker要简洁很多,因为我们不需要运行一个臃肿的客户机操作系统
基础设施
主操作系统:所有的主流的linux发行版都能运行docker。对于Macos和Windows,也有一些办法运行docker
docker守护进程:docker守护进程取代了hypervisor,它是运行在操作系统上后台进程,负责管理docker容器
各种依赖:对于docker,应用的所有依赖都打包在docker镜像中,docker容器是基于docker镜像创建的
应用。应用的源代码与它依赖都打包在docker镜像中,不同的应用运行在不同的docker容器中,他们是相互隔离的。

对比虚拟机与docker

docker守护进程可以直接与主操作系统进行通信,为各个docker容器分配资源;它还可以将容器与主操作系统隔离,并将各个容器互相隔离。虚拟机启动需要数分钟,而docker容器没有臃肿的操作系统,可以在数毫秒内启动。docker可以节省大量的磁盘空间以及其他的系统资源
说了这么多Docker的优势,大家也没有必要完全否定虚拟机技术,因为两者有不同的使用场景。虚拟机更擅长于彻底隔离整个运行环境。例如,云服务提供商通常采用虚拟机技术隔离不同的用户。而Docker通常用于隔离不同的应用,例如前端,后端以及数据库。

服务器虚拟化 vs Docker

服务器好比运输码头:拥有场地和各种设备(服务器硬件资源)

服务器虚拟化好比作码头上的仓库:拥有独立的空间堆放各种货物或集装箱

(仓库之间完全独立,独立的应用系统和操作系统)

Docker比作集装箱:各种货物的打包

(将各种应用程序和他们所依赖的运行环境打包成标准的容器,容器之间隔离)

Docker有着小巧、迁移部署快速、运行高效等特点,但隔离性比服务器虚拟化差:不同的集装箱属于不同的运单(Docker上运行不同的应用实例),相互独立(隔离)。但由同一个库管人员管理(主机操作系统内核),因此通过库管人员可以看到所有集装箱的相关信息(因为共享操作系统内核,因此相关信息会共享)。

服务器虚拟化就好比在码头上(物理主机及虚拟化层),建立了多个独立的“小码头”—仓库(虚拟机)。其拥有完全独立(隔离)的空间,属于不同的客户(虚拟机所有者)。每个仓库有各自的库管人员(当前虚拟机的操作系统内核),无法管理其它仓库。不存在信息共享的情况

因此,我们需要根据不同的应用场景和需求采用不同的方式使用Docker技术或使用服务器虚拟化技术。例如一个典型的Docker应用场景是当主机上的Docker实例属于单一用户的情况下,在保证安全的同时可以充分发挥Docker的技术优势。对于隔离要求较高的环境如混合用户环境,就可以使用服务器虚拟化技术。正则科技提供了丰富的Docker应用实例,满足您的各种应用需求,并且支持在已经安装了自在(Isvara)服务器虚拟化软件的主机上同时使用服务器虚拟化技术和Docker技术提供不同技术场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值