0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何区分虚拟机与Docker

jf_78858299 来源:外网厂商 分布式实验室 作者:刘凯 译 2023-02-14 11:36 次阅读

首先,大家需要明确一点,Docker容器不是虚拟机。

2014年,当我第一次接触Docker的时候,我把它比做一种轻量级的虚拟机。这样做无可厚非,因为Docker最初的成功秘诀,正是它比虚拟机更节省内存,启动更快。Docker不停地给大家宣传,"虚拟机需要数分钟启动,而Docker容器只需要50毫秒"。

然而,Docker容器并非虚拟机,我们不妨来比较一下它们。

理解虚拟机

图片

使用虚拟机运行多个相互隔离的应用时,如下图:

图片

从下到上理解上图:

  • 基础设施(Infrastructure) 。它可以是你的个人电脑,数据中心的服务器,或者是云主机。
  • 主操作系统(Host Operating System) 。你的个人电脑之上,运行的可能是MacOS,Windows或者某个Linux发行版。
  • 虚拟机管理系统(Hypervisor 。利用Hypervisor,可以在主操作系统之上运行多个不同的从操作系统。类型1的Hypervisor有支持MacOS的HyperKit,支持Windows的Hyper-V以及支持Linux的KVM。类型2的Hypervisor有VirtualBox和VMWare。
  • 从操作系统(Guest Operating System) 。假设你需要运行3个相互隔离的应用,则需要使用Hypervisor启动3个从操作系统,也就是3个虚拟机。这些虚拟机都非常大,也许有700MB,这就意味着它们将占用2.1GB的磁盘空间。更糟糕的是,它们还会消耗很多CPU和内存。
  • 各种依赖 。每一个从操作系统都需要安装许多依赖。如果你的的应用需要连接PostgreSQL的话,则需要安装libpq-dev;如果你使用Ruby的话,应该需要安装gems;如果使用其他编程语言,比如Python或者Node.js,都会需要安装对应的依赖库。
  • 应用 。安装依赖之后,就可以在各个从操作系统分别运行应用了,这样各个应用就是相互隔离的。

理解Docker容器

图片

使用Docker容器运行多个相互隔离的应用时,如下图:

图片

  • 主操作系统(Host Operating System) 。所有主流的Linux发行版都可以运行Docker。对于MacOS和Windows,也有一些办法"运行"Docker。
  • Docker守护进程(Docker Daemon) 。Docker守护进程取代了Hypervisor,它是运行在操作系统之上的后台进程,负责管理Docker容器。
  • 各种依赖 。对于Docker,应用的所有依赖都打包在Docker镜像中,Docker容器是基于Docker镜像创建的。
  • 应用 。应用的源代码与它的依赖都打包在Docker镜像中,不同的应用需要不同的Docker镜像。不同的应用运行在不同的Docker容器中,它们是相互隔离的。

对比虚拟机与Docker

图片

Docker守护进程可以直接与主操作系统进行通信,为各个Docker容器分配资源;它还可以将容器与主操作系统隔离,并将各个容器互相隔离。虚拟机启动需要数分钟,而Docker容器可以在数毫秒内启动。由于没有臃肿的从操作系统,Docker可以节省大量的磁盘空间以及其他系统资源。

说了这么多Docker的优势,大家也没有必要完全否定虚拟机技术,因为两者有不同的使用场景。虚拟机更擅长于彻底隔离整个运行环境。例如,云服务提供商通常采用虚拟机技术隔离不同的用户。而Docker通常用于隔离不同的应用,例如前端,后端以及数据库。

原文链接:https://diveintodocker.com/blog/comparing-virtual-machines-vs-docker-containers

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 操作系统
    +关注

    关注

    37

    文章

    6155

    浏览量

    121678
  • 虚拟机
    +关注

    关注

    1

    文章

    836

    浏览量

    27290
  • Docker
    +关注

    关注

    0

    文章

    430

    浏览量

    11573
收藏 人收藏

    评论

    相关推荐

    虚拟机资料

    本帖最后由 eehome 于 2013-1-5 10:10 编辑 虚拟机资料
    发表于 09-06 10:46

    虚拟机DNS问题

    我的主机开发板虚拟机本来能互相ping通的。今天我嫌samba服务器刷新慢,按照网上的说明修改虚拟机的/etc/hosts /etc/resolv.conf,拔掉了上网的网线,换成了连接笔记本
    发表于 03-06 18:56

    MYZR虚拟机功能演示

    MYZR虚拟机功能演示目录 1安装并配置开发环境1.1安装并运行虚拟机系统1.1.1准备虚拟机系统和软件1.1.2安装虚拟机1.1.3运行虚拟机
    发表于 12-27 15:04

    为什么PC可以ping通虚拟机,但虚拟机ping不通PC?

    我的是笔记本连无线网,开发板通过另一个路由器连接PC,PC IP:192.168.1.100;虚拟机ip:192.168.1.123;板子ip:192.168.1.17遇到的问题:PC可以ping通虚拟机,但虚拟机ping不同P
    发表于 10-25 00:44

    虚拟机如何上网

    快速教会你,虚拟机如何上网
    发表于 05-15 15:06

    介绍VirtualBox虚拟机的构建方法

    本系列文章将向大家介绍嵌入式系统开发的各方面知识。本文将向大家介绍VirtualBox虚拟机的构建方法。一、什么是虚拟机二、主流虚拟机三、VirtualBox介绍四、Windows下安装包的下载五、安装步骤...
    发表于 11-08 06:21

    安装虚拟机

    1、安装虚拟机可以阅读往期文章:Mac苹果电脑安装虚拟机2、在虚拟机上安装CH340驱动,keil4,PZ-ISP,下载CH340驱动安装 下载keil4破解及汉化 下载普中科技烧录软件转载于
    发表于 11-19 08:10

    如何创建虚拟机

    实战开发--开发环境安装(五)1、下载软件vmware和ubuntu-20.04.1-desktop-amd64.iso2、创建虚拟机完整步骤3、安装嵌入式linux所需的工具包4、安装vmware tool,实现虚拟机与物理主机交换和拖拉文件功能,从而文件共享目的5、主
    发表于 12-16 07:45

    请问OK3399怎么不提供虚拟机镜像编译环境?

    Docker编译环境真难用,怎么不提供虚拟机镜像编译环境呢?
    发表于 12-30 07:34

    Docker监控实战分析

    的「轻」也只是相对于传统虚拟机而已。传统虚拟机Docker 的对比如图: 从图中可以看出 Docker虚拟机的差异,
    发表于 10-13 17:05 2次下载
    <b class='flag-5'>Docker</b>监控实战分析

    什么是 DockerDocker与传统的虚拟机有什么区别?

    Docker 容器将软件以及它运行安装所需的一切文件(代码、运行时、系统工具、系统库)打包到一起,这就保证了不管是在什么样的运行环境,总是能以相同的方式运行。就好像 Java 虚拟机一样,“一次编写
    的头像 发表于 03-16 14:28 5.1w次阅读
    什么是 <b class='flag-5'>Docker</b>?<b class='flag-5'>Docker</b>与传统的<b class='flag-5'>虚拟机</b>有什么区别?

    什么是虚拟化?什么是DockerDocker容器与虚拟机区别

    Docker是一个虚拟环境容器,可以将你的可执行文件、配置文件及一切其他你需要的文件一并打包到这个容器中,并发布和应用到任意平台。比如,你在本地用Python开发了一个网站后台,开发测试完成后
    发表于 05-03 14:18 2.4w次阅读

    Docker容器与虚拟机的区别

    我曾经将Docker容器视为轻量级,精简的虚拟机。 进行这种比较是有道理的,因为至少在Docker的最初市场中,总是将其与虚拟机进行比较-例如,"
    的头像 发表于 05-03 17:17 7349次阅读

    容器、Docker虚拟机的区别

    移植的系统。它不仅简化了打包应用的流程,也简化了打包应用的库和依赖,甚至整个操作系统的文件系统能被打包成一个简单的可移植的包,这个包可以被用来在任何其他运行Docker的机器上使用。 容器和虚拟机具有相似的资源隔离和分配方式,容器虚拟
    的头像 发表于 11-05 09:41 2649次阅读

    Docker虚拟机的区别

    Docker虚拟机是两种不同的虚拟化技术,它们在实现方式、资源消耗、运行性能等方面存在许多差异。本文将会详细介绍它们的区别。 一、实现方式 1.1 虚拟机
    的头像 发表于 11-23 09:37 1455次阅读