参考资料

  1. Docker Compose的作用是什么?
  2. Docker基于Linux容器技术
  3. 能否用Docker替代虚拟化?
  4. docker安装rabbitmq详细说明以及案例
  5. Docker与其他技术的对比
  6. Docker国内镜像源配置方法
  7. docker安装nginx详细说明以及案例
  8. docker安装redis详细说明以及案例
  1. 资源占用更少

    • Docker容器共享主机OS内核,无需完整操作系统,内存和磁盘占用更小。

    • 虚拟机需要独立OS和虚拟化层,资源开销更大(通常以GB为单位)。

  2. 启动速度更快

    • 容器启动为秒级(毫秒级),直接调用主机内核。

    • 虚拟机需启动完整OS,通常需要分钟级时间。

  3. 性能接近原生

    • 容器无虚拟化层(如Hypervisor)开销,CPU/IO性能损失低于5%。

    • 虚拟机因硬件虚拟化,性能损失通常在15%-30%。

  4. 更高的部署密度

    • 单台主机可运行数百个容器(依赖资源限制)。

    • 虚拟机因OS开销,通常只能运行数十个实例。

  5. 一致的运行环境

    • 镜像包含应用所有依赖(库、配置),彻底解决“环境差异”问题。

    • 虚拟机需手动保证环境一致性或使用复杂模板。

  6. 快速构建与交付

    • 通过Dockerfile实现自动化镜像构建(分钟级)。

    • 虚拟机镜像制作需克隆、配置,耗时更长(小时级)。

  7. 微服务支持

    • 每个容器天然隔离,适合作为微服务单元独立部署/扩展。

    • 虚拟机粒度较粗,单VM通常承载多个服务。

  8. 跨平台兼容性

    • 镜像可在任何支持Docker的平台运行(Linux/Windows/云)。

    • 虚拟机镜像受限于虚拟化技术(如VMware镜像无法直接用于KVM)。

  9. 运维效率

    • 容器支持秒级扩缩容和滚动更新。

    • 虚拟机扩缩容需分配新VM,流程更复杂。

  10. DevOps集成

  • 与CI/CD工具(Jenkins、GitLab CI)深度集成,实现自动化流水线。

  • 虚拟机部署通常需要额外编排工具(如Terraform)。

补充说明

  • 安全性:虚拟机因完全隔离更安全,容器需依赖Namespace/Cgroups等机制隔离。

  • 适用场景:Docker适合无状态应用和云原生场景,虚拟机更适合需要强隔离或特殊内核的场景(如数据库、传统应用)。