docker容器与虚拟机区别

author author     2023-03-13     164

关键词:

参考技术A 我们传统的虚拟机需要模拟整台机器包括硬件,每台虚拟机都需要有自己的操作系统,虚拟机一旦被开启,预分配给他的资源将全部被占用,每一个虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统。

容器技术是和我们的宿主机共享硬件资源及操作系统可以实现资源的动态分配。
容器包含应用和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中,在用户空间以分离的进程运行。

虚拟机和容器都是在硬件和操作系统以上的,虚拟机有 Hypervisor 层,Hypervisor 是整个虚拟机的核心所在。它为虚拟机提供了虚拟的运行平台,管理虚拟机的操作系统运行。每个虚拟机都有自己的系统和系统库以及应用。

容器没有 Hypervisor 这一层,并且每个容器是和宿主机共享硬件资源及操作系统,那么由 Hypervisor 带来性能的损耗,在 linux 容器这边是不存在的。

但是虚拟机技术也有其优势,能为应用提供一个更加隔离的环境,不会因为应用程序的漏洞给宿主机造成任何威胁。同时还支持跨操作系统的虚拟化,例如你可以在 linux 操作系统下运行 windows 虚拟机。

从虚拟化层面来看,传统虚拟化技术是对硬件资源的虚拟,容器技术则是对进程的虚拟,从而可提供更轻量级的虚拟化,实现进程和资源的隔离。

从架构来看,Docker 比虚拟化少了两层,取消了 hypervisor 层和 GuestOS 层,使用 Docker Engine 进行调度和隔离,所有应用共用主机操作系统,因此在体量上,Docker 较虚拟机更轻量级,在性能上优于虚拟化,接近裸机性能。

从应用场景来看,Docker 和虚拟化则有各自擅长的领域,在软件开发、测试场景和生产运维场景中各有优劣

docker 启动快速属于秒级别。虚拟机通常需要几分钟去启动。
docker 需要的资源更少,docker 在操作系统级别进行虚拟化,docker 容器和内核交互,几乎没有性能损耗,性能优于通过 Hypervisor 层与内核层的虚拟化。
docker 更轻量,docker 的架构可以共用一个内核与共享应用程序库,所占内存极小。同样的硬件环境,Docker 运行的镜像数远多于虚拟机数量,对系统的利用率非常高。
与虚拟机相比,docker 隔离性更弱,docker 属于进程之间的隔离,虚拟机可实现系统级别隔离。
安全性: docker 的安全性也更弱。Docker 的租户 root 和宿主机 root 等同,一旦容器内的用户从普通用户权限提升为 root 权限,它就直接具备了宿主机的 root 权限,进而可进行无限制的操作。虚拟机租户 root 权限和宿主机的 root 虚拟机权限是分离的,并且虚拟机利用如 Intel 的 VT-d 和 VT-x 的 ring-1 硬件隔离技术,这种隔离技术可以防止虚拟机突破和彼此交互,而容器至今还没有任何形式的硬件隔离,这使得容器容易受到攻击。
可管理性:docker 的集中化管理工具还不算成熟。各种虚拟化技术都有成熟的管理工具,例如 VMware vCenter 提供完备的虚拟机管理能力。
高可用和可恢复性:docker 对业务的高可用支持是通过快速重新部署实现的。虚拟化具备负载均衡,高可用,容错,迁移和数据保护等经过生产实践检验的成熟保障机制,VMware 可承诺虚拟机 99.999% 高可用,保证业务连续性。
快速创建、删除:虚拟化创建是分钟级别的,Docker 容器创建是秒级别的,Docker 的快速迭代性,决定了无论是开发、测试、部署都可以节约大量时间。
交付、部署:虚拟机可以通过镜像实现环境交付的一致性,但镜像分发无法体系化;Docker 在 Dockerfile 中记录了容器构建过程,可在集群中实现快速分发和快速部署;

初学docker容器(代码片段)

初学docker容器docker是什么docker与虚拟机的区别docker使用场景docker的原理docker三个统一和docker三大组件docker引擎docker-server配置文件docker的部署(20版)docker镜像操作docker是什么docker是一种轻量级的虚拟机在linux容器中运行应... 查看详情

docker安全管理(代码片段)

Docker安全管理——理论+操作-------------------------------------------------Docker容器与虚拟机的区别------------------------------------------------------**1.隔离与共享**虚拟机通过添加Hypervisor层,虚拟出网卡、内存、CPU等虚拟硬件,再在其上建立虚... 查看详情

docker深入浅出系列|容器初体验(代码片段)

原文:Docker深入浅出系列|容器初体验目录Docker深入浅出系列|容器初体验教程目标预备工作容器与虚拟化技术什么是Docker为什么要用Docker事例什么是容器镜像和容器容器与虚拟机的区别Vagrant与Docker的区别Docker引擎和架构Docker的镜... 查看详情

docker安全管理—-tls(安全认证)(代码片段)

一、Docker容器与虚拟机的区别1.隔离与共享虚拟机通过添加Hypervisor层,虚拟出网卡、内存、CPU等虚拟硬件,再在其上建立虚拟机,每个虚拟机都有自己的系统内核。而Docker容器则是通过隔离的方式,将文件系统、进程、设备、网... 查看详情

docker容器的安全(代码片段)

Docker容器与虚拟机的区别1.隔离与共享虚拟机通过添加Hypervisor层,虚拟出网卡、内存、CPU等虚拟硬件,再在其上建立虚拟机,每个虚拟机都有自己的系统内核。而Docker容器则是通过隔离的方式,将文件系统、进程、设备、网络等... 查看详情

docker安全问题(client端与daemon的通信安全)(代码片段)

Docker安全及日志管理一.Docker容器与虚拟机的区别1.隔离与共享2.性能与损耗二.Docker存在的安全问题1.Docker自身漏洞2.Docker源码问题3.Docker架构缺陷与安全机制4.Docker安全基线标准三.容器相关的常用安全配置方法四.限制流量流向五.... 查看详情

docker和传统虚拟机有啥区别?

参考技术A  Docker是一种轻量级的虚拟化技术,比传统的虚拟机性能更好,但也有人认为虚拟机比Docker更好,那么Docker和虚拟机哪个好?相信不少人对此有所疑问,具体内容请看下文:  Docker和虚拟机有各自擅长的领域,在软... 查看详情

强力的应用容器引擎——docker的安装和镜像容器的基本操作!(代码片段)

docker的安装和基本使用介绍一、Docker概述1.1Docker初识1.2容器的特点1.3容器和Docker与虚拟机的区别1.3.1容器与虚拟机的区别1.3.2Docker与虚拟机的区别1.3.3容器在内核中支持2种重要技术1.4Docker核心概念1)镜像2)容器3)仓... 查看详情

docker跟一般的虚拟机有啥区别

Docker和虚拟机有各自擅长的领域,在软件开发、测试场景和生产运维场景中各有优劣势:1、Docker启动快速属于秒级别,虚拟机通常需要几分钟去启动;2、Docker需要的资源更少,Docker在操作系统级别进行虚拟化,Docker容器和内核交... 查看详情

docker和vmhyper-v等虚拟机的区别

首先,大家需要明确一点,Docker容器不是虚拟机。2014年,当我第一次接触Docker的时候,我把它比做一种轻量级的虚拟机。这样做无可厚非,因为Docker最初的成功秘诀,正是它比虚拟机更节省内存,启动更快。Docker不停地给大家... 查看详情

docker:容器与虚拟机的比较

下面的图片比较了Docker和传统虚拟化方式的不同之处,可见容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。  与传统的虚拟机相比,Docker优势体现为启动速度快、占... 查看详情

容器(Docker)和 IIS 之间的区别

】容器(Docker)和IIS之间的区别【英文标题】:Differencebetweencontainers(Docker)andIIS【发布时间】:2015-05-2018:29:14【问题描述】:我正在学习容器(主要是Docker),因为它正在进入Windows。而且好处似乎与IIS非常相似。我在防火墙后面... 查看详情

docker系列之一:初见docker

什么是docker?docker是目前linux最流行的容器技术,Docker将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样优点:占用资源... 查看详情

docker安全(代码片段)

Docker容器与虚拟机的区别1.隔离与共享虚拟机通过添加Hypervisor层,虚拟出网卡、内存、CPU等虚拟硬件,再在其上建立虚拟机,每个虚拟机都有自己的系统内核。而Docker容器则是通过隔离的方式,将文件系统、进程... 查看详情

每天学一点docker-深入了解容器概念

什么是容器?容器是一个自包含,可移植,轻量级的软件打包技术。是应用程序在任何地方几乎以相同方式运行。开发人员在开发机上创建好容器,无需任何修改就能在虚拟机,云服务器或公有云主机上运行。 容器与虚拟机... 查看详情

docker与虚拟机有何不同

docker与虚拟机有何不同Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器技术有很多种,Docker是目前最流行的一种,... 查看详情

docker和虚拟机的区别

参考技术Adocker是一种具体的虚拟化技术虚拟机是个虚拟化技术的一个虚拟出来的机器为什么叫虚拟,是和物理机对应的。传统一台物理机装一个linux系统虚拟化技术可以使得一台物理机做出来多多个虚拟机,每个虚拟机装一个lin... 查看详情

docker部署asp.netcore应用(代码片段)

1容器概念  使用Docker前我们首先要简单了解一下容器的概念。MSDN上有一张虚拟机和容器的对比图,很好的展示了虚拟机和容器的区别,如下所示,虚拟机包括应用程序、必需的库或二进制文件以及完整的来宾操作系统,每台... 查看详情