vagrant、docker、virtualenv 或虚拟机之间有什么区别?

what is the difference between vagrant, docker, virtualenv or just a virtual machine?

我使用 python 和 django 框架开发网站,我喜欢快速完成工作。 我以前使用虚拟机或在本地主机上使用,最近去了 vagrant,我不确定是否有其他技术可以帮助保持进程更快? 我可以使用一些提示和指示。

- Docker

  • 非常擅长通过 Docker 索引
  • 构建和与他人共享磁盘映像
  • Docker 是基础架构的管理器(今天的绑定是针对 Linux 容器的,但未来的绑定包括 KVM、Hyper-V、Xen 等)
  • Docker 是使用配置*管理器(如 Chef、Puppet、SaltStack 等)构建的服务器模板的绝佳图像分发模型
  • Docker 使用 btrfs(一种写时复制文件系统)来跟踪文件系统差异,这些差异可以提交并与其他用户协作(如 git)
  • Docker 有一个中央磁盘映像存储库(public 和私有),让您可以轻松地 运行 不同的操作系统(Ubuntu、Centos、Fedora、甚至 Gentoo)

- virtualenv

  • 它将 Python 解释器和 Python 依赖项隔离在一台机器上,因此您可以同时安装多个 Python 项目以及它们自己的依赖项。但是对于机器的其余部分,virtualenv 什么都不做:

  • 你仍然有使用你的 Mac OS X / Linux 包管理器安装的全局依赖项/包,并且这些在 virtualenvs 之间共享。

- 虚拟机(VM)

  • 它是一种软件程序或操作系统,不仅表现出独立计算机的行为,而且还能够像独立计算机一样执行 运行应用程序和程序等任务。
  • 通常称为来宾的虚拟机是在称为“主机”的另一个计算环境中创建的。
  • 多个虚拟机可以同时存在于一个主机中。

-流浪汉

  • 常用于以编程方式配置虚拟机

  • 指定整台机器:它允许您指定Linux发行版、要安装的包和安装项目要采取的操作。

  • 因此,如果您想在该机器上启动一个包含多个 Python 项目的 Vagrant box,您仍然需要使用 virtualenv 来保持 Python 依赖项独立。