虚拟机和容器的区别(一)Docker + Kubernetes学习

本文探讨了虚拟机(如KVM、VMware、ESXi、Xen)和容器(如Docker、Podman)的区别与相似之处。两者都提供资源隔离,但实现方式不同:虚拟机依赖模拟器,容器利用namespace+cgroup进行隔离。虚拟机提供操作系统级别的服务,而容器提供应用级别的服务,具有更好的可移植性。资源分配上,虚拟机按分配使用,容器通过cgroup限制使用。在隔离性和性能上,虚拟机更优,容器更轻量且高效。
虚拟机:
  • KVM
  • vmware workstation
  • exsi
  • xen

容器:
  • Docker
  • podman
  • containerd

相同:
  1. 资源隔离
  2. 独立的操作系统,提供隔离的服务

不同:
  1. 底层的实现技术不一样,虚拟机的核心是模拟器,而容器的核心是namespace + cgroup(资源隔离、资源限制)
    1. 虚拟机不知道自己是台虚拟机,资源分配的多少,就是多少,但是容器不知道自己是个容器,宿主机多少资源他就以为自己有多少,这样就会出现资源抢占问题,所以容器使用了namespace欺骗容器他是独一无二的,从而实现资源隔离;使用cgroup实现了资源的限制,在容器上使用free -m,看到的是宿主机的资源,cgroup只是限制了他对资源的使用;
  2. 虚拟机的宿主机无需OS(exsi),但容器的宿主机必须得有OS
  3. 隔离性:
    1. 虚拟机拥有更好的隔离性
    2. 容器只能实现进程级隔离
  4. 资源限制:
    1. 虚拟机分配多少就用多少
    2. 容器使用cgroup限制
  5. 性能:
    1. 虚拟机在使用资源时,需要借助hypervisor,性能会有所衰减
    2. 容器运行在宿主机上
  6. 虚拟机包含完整的操作系统,容器只包含用户态,使用物理机内核
  7. 提供服务级别不同:
    1. 虚拟机提供的是操作系统级别的服务 (IaaS)
    2. 容器提供的是应用级别的服务 (PaaS) (需要什么应用就单独部署一个容器)
  8. 可移植性
    1. 虚拟机镜像,少则几百M,大则几个G
    2. 一个容器镜像少则几十K,正常来讲是几十上百M
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nayuta_2000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值