跳到主要内容

虚拟机与容器

虚拟机如何隔离一整套操作系统?​

  • 虚拟机: 在物理资源之上提供虚拟计算机,包含虚拟 CPU、内存、网络、存储及自己的客户机操作系统;
  • Hypervisor: 虚拟机监控器,负责分配和隔离物理资源,创建及管理虚拟机;
  • 资源池: 将硬件资源按需求分给多个客户机,提升单台物理服务器利用率;
  • 使用场景: 独立测试环境、不同操作系统、服务整合及较强的运行环境隔离;
  • 代价: 每台虚拟机通常有独立内核和系统开销,启动、更新与镜像管理较重;

容器如何打包并隔离应用运行环境?​

  • 容器: 把应用、运行时与依赖打包成可部署单元,并在操作系统级隔离进程与资源视图;
  • 共享内核: 同一主机上的普通容器共享宿主内核,不像虚拟机各自运行完整客户机内核;
  • 可移植性: 把依赖随镜像固定,减少开发与部署环境差异,但仍需匹配 CPU 架构和可用内核能力;
  • 资源控制: 可限制 CPU、内存和网络等资源,配置不当仍可能让一个工作负载影响其他工作负载;

虚拟机和容器有哪些关键差异?​

维度虚拟机容器
抽象对象硬件操作系统级运行环境
内核每个客户机有自身内核通常共享宿主内核
打包内容操作系统与应用依赖应用与用户态依赖
资源开销通常较高通常较低
启动与密度通常启动更慢、密度较低通常启动更快、密度较高
  • 组合部署: 容器可以运行在虚拟机上,二者并非必须二选一;
  • 隔离边界: 容器的轻量不表示隔离与虚拟机完全相同,需结合信任模型和运行时机制判断;

容器怎样改变开发与运维分工?​

  • 开发责任: 明确应用逻辑、版本与依赖,输出可重复构建的运行单元;
  • 运维责任: 管理调度、网络、资源、发布和观测,保证镜像能在目标环境运行;
  • 敏捷收益: 环境一致有助于快速部署和定位依赖问题;
  • 维护要求: 镜像、依赖和宿主系统仍需更新,打包不会消除运行时治理;

选择运行形态时应先问什么?​

  • 决策问题: 是否需要不同内核、怎样隔离租户、启动速度和资源密度是否重要,以及团队能否管理对应平台;
  • 验证方式: 测量实际启动时间、资源占用和故障隔离效果,避免用“轻量”替代具体预算;