开发者社区> 问答> 正文

单纯的开发环境来说 Docker 和 Vagrant 该如何选择?

已解决

场景一:单一开发环境

只进行单一语言的开发,启动一台虚拟机,这种情况 docker 占用的资源会不会比较多?

场景二:多环境开发

既要进行 php 开发,又要进行 python,两个程序需要不同的环境,vagrant 进行开发的话,需要启动两个 vagrant 虚拟机才行,占用资源多,这时候选择 Docker 会不会更好?

展开
收起
西秦说云 2016-02-01 16:15:16 5617 0
2 条回答
写回答
取消 提交回答
  • 码农|Coder| Pythonista
    采纳回答

    Docker 不算是虚拟机,是进程隔离,对于资源的消耗很少。
    vagrant 是虚拟机上做的封装,虚拟机本身消耗资源。

    如果你本来用的 Linux,如果是场景一还是场景二,都选 Docker

    如果你用的是 OSX 或者 Windows,那就需要开虚拟机,场景一下 vagrant 更简单,场景二下就需要在 vagrant 里面上 Docker

    2019-07-17 18:27:40
    赞同 1 展开评论 打赏
  • Docker是应用执行环境,不是虚拟机,对于宿主来说只是个隔离的进程;而Vagrant是虚拟机辅助软件,使用Vagrant既使用虚拟机,因此所运行的是一个完整操作系统。这是最本质的区别。

    Docker运行需要依托Linux内核,因此对于Windows, OSX系统而言,需要有一个Linux虚拟机运行起来,才可以使用Docker。因此在这种环境下,从单一虚拟机角度来说,Docker和Vagrant没有占用资源的差别。对于 Linux工作环境来说,那就没有这个问题,使用Docker要比Vagrant轻量级很多。

    而在OSX, Windows下使用Docker和Vagrant开发,很重要的一个问题在于共享文件目录上。之前大家在这两个系统上安装的Docker环境都是通过Docker Toolbox ( https://docs.docker.com/toolbox/overview/ )来安装配置的,它使用的是Virtualbox,对于共享主机文件目录到Docker环境上有一些问题,大多数情况能用,但是部分情况会出故障。所以相对于 Docker Toolbox的环境而言,如果需要一些文件目录监控等高级功能,vagrant更适合开发。

    但是,这个问题现在已经解决,Docker刚刚发布了Docker for Mac/Windows (beta) (https://docs.docker.com/docker-for-mac/),这将不在使用Virtualbox,而是使用 xhype (OSX), Hyper-V (Windows 10) 来运行一个更为精简的Linux (Alpine)。由于使用了操作系统原生虚拟框架,因此共享目录上的种种问题得到了解决,此外 Alpine 的使用,让Linux虚拟机加载更为迅速。所以在这种情况下,使用 Docker 要比 Vagrant 有更多的优势。

    所以,从未来角度看,Docker是大势所趋。

    2019-07-17 18:27:40
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
应用 Docker 进行持续交付:用技术改变交付路程 立即下载
从Docker到容器服务 立即下载
构建基因数据应用生态系统—— docker in Bio/informatics 立即下载