首页 > 其他分享 >Docker 和虚拟机的区别

Docker 和虚拟机的区别

时间:2023-06-05 21:24:13浏览次数:44  
标签:依赖 操作系统 区别 Hypervisor 虚拟机 应用 Docker

image

虚拟机

  • 基础设施(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 容器

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

转载地址:https://zhuanlan.zhihu.com/p/487824422

标签:依赖,操作系统,区别,Hypervisor,虚拟机,应用,Docker
From: https://www.cnblogs.com/werr370/p/17458939.html

相关文章

  • HTTP代理与SOCKS代理的区别
    HTTP代理和SOCKS代理都是常见的代理服务,主要划分依据为根据协议的不同而进行划分的;本文我们就为大家解答一下什么是HTTP代理和SOCKS代理,以及他们的区别是什么?HTTP代理——全称为【HyperTextTransferProtocol代理】,是一种基于HTTP协议的代理服务器。它主要用于HTTP请求的转发和缓......
  • Verilog 顺序块、并行块,阻塞过程赋值、非阻塞过程赋值的区别
    顺序块:顺序块中的语句执行都是从上到下顺序执行,和C语言执行过程一样,关键词是begin、end。initialbegin//顺序块关键字 tb_sel=1'b0; #5tb_in1=1'b1;//时刻5执行 #10tb_in2=1'b1;//时刻15执行 #20tb_sel=1'b1;//时刻35执行end编辑 上图为顺序块仿真时序图,可以看......
  • Autowired注解与Resource注解的区别
    两者的用法其实这两个注解的作用都一样,都是在做bean的注入,在使用过程中,两个注解有时候可以替换使用.两者的共同点@Resource注解和@Autowired注解都可以用作bean的注入.在接口只有一个实现类的时候,两个注解可以互相替换,效果相同.两者的不同点@Resource注解是Java自身......
  • Kubernetes 的不同大版本之间有许多重大的区别
    Kubernetes的不同大版本之间有许多重大的区别。以下是一些主要的区别:v1.0-v1.6:这是Kubernetes最初的几个版本,这些版本相对较简单,并且缺乏一些现在已经成为核心特性的功能,例如StatefulSet和DaemonSet。v1.7-v1.12:这些版本引入了一些重要的新功能,例如StatefulSet、......
  • 事件和委托的区别
     ......
  • C# new 和override重写的区别
    在C#中,函数前面加override和new都可以实现函数的重写(Overriding)。不过它们实现的方式不同,因此会有一些区别。1.Override在C#中,override关键字主要用于重写父类中虚方法(VirtualMethod),它表示子类中的方法会覆盖父类中的同名方法。使用override关键字后,子类的方法必须......
  • 嵌入式知识分享:Docker容器部署方法说明
    前 言本指导文档适用开发环境:Windows开发环境:Windows764bit、Windows1064bitLinux开发环境:Ubuntu18.04.464bit虚拟机:VMware15.1.0Docker是一个开源的应用容器引擎,让开发者可打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,亦......
  • docker 查看启动容器的运行命令 参数
    1.dockerps-a--no-truncCONTAINERIDIMAGECOMMAND......
  • Java应用程序和小程序的区别是什么?
    最近正在B站上看动力节点老杜的视频自学Java,整理了这篇文章Java应用程序和小程序的区别,也是新手入门需要了解的,方便大家后续的学习 应用程序是一个独立的Java程序,在客户端或服务器端的虚拟机支持下运行。Java应用程序旨在执行特定功能,以在任何与Java兼容的虚拟机上运行,而不管计......
  • 6-5|salt如何移除dockercompoise文件的内容
    在DockerCompose中,如果需要移除某个服务或者容器,可以使用`docker-composedown`命令,该命令会移除所有服务和容器,同时也会移除关联的网络和卷等资源。如果只需要移除某个特定的服务或容器,可以运行`docker-composerm<service-name>`或者`docker-composerm<container-nam......