Docker vs Vagrant

根据我的理解,每个Docker映像都基于基本映像 – 例如Ubuntu。

如果我想隔离任何过程,我应该部署ubuntu的docker基础映像( 这里与Vagrant有什么不同? ),并在ubuntu映像上安装后创build一个必要的子映像?

那么,如果Ubuntu在Vagrant和Docker上启动,那么实践区别在哪里呢? 如果在Vagrant中使用docker提供程序 – 这里是Vagrant和Docker的区别吗?

而且,在Docker中,有可能在没有基本映像的情况下将一些PC上的进程隔离起来,而不将它们共享到另一台PC上?

Vagrant是一个实用程序,可以帮助您自动设置虚拟机。 Docker是一个帮助你在linux中使用容器化的工具。

虚拟机运行整个系统,并模拟硬件。 容器将单个运行内核中的进程分开,而不模拟硬件。

VM和Docker镜像都可能是Ubuntu 14.04,但是使用Docker镜像,您不需要运行整个操作系统。

例如,如果我想运行一个基于ubuntu的nginx容器,我最终只会运行nginx进程。 不需要upstart / systemd / init。 虚拟机将运行一个init系统,pipe理自己的networking,并运行其他服务。 使用Linux发行版的容器映像方法大多是为了方便。

运行Docker容器完全可以使用非常小的图像。 图像中的一个静态编译的二进制文件就是运行一个容器所需要的。

Vagrant :Vagrant是一个帮助产生虚拟机的项目。 它以VirtualBox的命令行开始,类似于VM的Gemfile。 您可以select基础映像,networking,IP,共享文件夹,并将其放在一个文件中,任何人都可以重复使用,以产生相同的configuration机器。 Vagrant有不同的扩展,configuration选项和虚拟机提供商。 您可以运行VirtualBox,VMware,并且可以扩展到能够在EC2上创build实例。

Docker :Docker允许将一个具有所有依赖的应用程序打包到一个标准的软件开发单元中。 因此,它减less了开发人员,质量保证和testing之间的摩擦。 它dynamic地改变你的应用程序,每天增加新的function,扩展服务,快速改变问题领域。 Docker把自己置于一个激动人心的地方,作为PaaS的接口,无需关心底层基础架构,就能实现联网,发现和服务发现。 是的,他们仍然是在docker的生产问题,但是,希望我们能看到这些问题的解决scheme,作为docker工作人员和贡献者在这些问题上努力工作。 由于Docker Volume驱动程序允许第三方容器数据pipe理解决scheme为运行数据的容器(如数据库,键值存储区和其他有状态的应用程序)提供数据卷。 最新的版本提供了更多的灵活性,完整的协调内置,高级networking,秘密pipe理等等。正如你所看到的,rexray,作为卷插件,并提供先进的存储function。 emccode / rexray我们终于开始同意不仅仅是图像和运行时间。