Vagrant 和 Docker 的区别,该如何选?

2022-03-29 20:55:00 浏览数 (1)

什么是 Vagrant

关于 Vagrant 的介绍,可以参看前一篇文章:什么是Vagrant? Vagrant和VirtualBox的区别。

Vagrant 和 Docker 区别

关于 Vagrant 被问到最多的问题:Vagrant 和 Docker 之间有什么区别。

如果不分场景的直接比对 Vagrant 和 Docker 是不恰当的。在一些简单场景中,它们的作用是重复的,但在更多场景中,它们是无法相互替代的。

那么什么情况下应该用 Vagrant,什么情况下用 Docker 呢?

所以如果你仅仅是想管理虚拟机,那么你应该使用 Vagrant;如果你想快速开发和部署应用,那么应该使用 Docker。

下面具体来说说为什么。

Vagrant 是 VM 的管理工具,或是说编排工具;Docker 是用来构建、运行、管理容器的工具。那么这个问题其实落在了虚拟机(VM)和 容器(Container)的区别。

引用网络上一组照片来感受一下物理机(Host),虚拟机(VM)和 容器(Container)之间的区别。

物理机(Host)

物理机

虚拟机(VM)

虚拟机

容器(Container)

Docker

从图上我们更容易理解虚拟机(VM)和容器(Container)的这些不同:

特性

虚拟机

容器

隔离级别

操作系统级

进程级别

隔离策略

Hypervisor

CGROUPS

系统资源

5 - 15%

0 - 5%

启动时间

分钟级

秒级

镜像存储

GB

MB

总结:Vagrant 和 Docker 的使用场景区别

Vagrant 设计是用来管理虚拟机的,Docker 设计是用来管理应用环境。

Vagrant 更适合用来做开发、测试,解决环境一致性的问题;Docker 更适合做快速开发和部署,CI/CD。

最后,Vagrant 和 Docker 都有大量社区贡献的 “Box”[1]“Image”[2] 可供选择 参考资料

[1]“Box”: https://app.vagrantup.com/boxes/search

[2]“Image”: https://hub.docker.com/

0 人点赞