Vagrant - Docker提供程序与Docker配置管理器的区别

17

有人可以解释一下它们的区别吗?

Provisioner - 是指执行提供服务的工具,比如在docker中安装、运行、拉取容器。

Provider - 是指运行虚拟机的工具。例如VBox运行Ubuntu操作系统镜像。

Docker怎么可能是一个Provider呢?它直接运行某个docker镜像吗?如果我在Windows上使用,那么一定会使用boot2docker吗?什么情况下应该使用每个工具?

1个回答

10

Docker供应商可帮助准备环境:构建和拉取镜像,如果您需要为vagrant机器运行多个容器,则可以运行容器。 Docker提供商在docker容器中运行vagrant机器(而不是像其他供应商一样在VM /云中运行)。

在Linux上,vagrant使用主机操作系统中的docker。在Windows和MacOS X上,boot2docker用于docker供应商和提供商。默认情况下,所有vagrant docker机器都使用相同的boot2docker实例-但您可以配置要使用哪个VM(它不需要是boot2docker-任何具有docker的Linux都可以)。


为什么我想在Docker机器上运行Vagrant?Vagrant有助于在任何地方运行Docker,但反之呢?对于Windows的这种用例意味着运行boot2docker,该容器再运行vagrant容器,从而可以再次运行docker。为什么要在Docker容器中使用Vagrant?“在Linux上,Vagrant正在使用主机操作系统中的Docker”,所以我有Vagrant镜像,并且它以某种方式使用安装在主机上的Docker?您能否请进一步澄清一下? - Zveratko
1
@Zveratko,可能有不同的原因:在Linux上,Docker比任何虚拟机更快且资源效率更高,可能是您想要使用的某个Docker容器。但我个人更喜欢直接使用Docker-我完全从Vagrant迁移到了Docker,但这是偏好和用例的问题。 - ISanych
1
如果您想在MacOS/Windows上使用Docker,您需要虚拟机,并且他们想要使用自己的虚拟机而不是boot2docker。引用第一个链接中的话:“但是如果您不想使用boot2docker呢?如果您更愿意使用Ubuntu或CentOS,这样您在Vagrant中所做的更接近于您可能在数据中心中所做的呢?”这是可选的,在大多数情况下默认设置就可以了。从我的角度来看,只有那些将Vagrant用于许多其他目的的人才会使用Vagrant + Docker。如果您只是使用Vagrant和Docker,我认为这里没有什么意义,最好直接使用Docker。 - ISanych
`When describing Docker containers, Vagrant makes each container look like it is its own virtual machine. But this is a lie, as each Docker container is actually running in a "proxy" virtual machine.Therefore, two Vagrant files are required, one to define the proxy virtual machine (the provisioner) and one to define the the Docker containers (the providers).` - Zveratko
1
当需要两个Vagrant文件时,这是一个罕见的情况 - 您可以使用默认方法,当需要使用boot2docker时,vagrant将自动处理并且对您透明 - 是的,所有Docker容器都将使用一台机器(物理或虚拟的,这取决于您的操作系统),但这不应该成为问题,并且允许利用Docker的优势 - 更快的启动时间和更好的资源利用率。 - ISanych
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接