Docker puppet vagrant 有什么区别/优缺点/不同之处不同用法等?

2015-02-04 08:53:55 +08:00
 SharkIng
以前接触过puppet,用过vagrant
最近在看关于docker的东西,但是不知道为什么突然感觉docker和上面两个其中一个很像,也不知道是哪个?

所以想了解下,用过这三个东西的朋友们,能不能详细说明下三个东西的不同之处及优缺点什么的?

PS:因为平时都不是很常用以上三个东西,都只能说略懂,所以求轻喷
5577 次点击
所在节点    问与答
13 条回复
tabris17
2015-02-04 09:05:45 +08:00
puppet是自动化部署,vagrant是虚拟机管理软件,依托于vb、vm等虚拟机软件,docker是一个虚拟执行环境,利用linux内核特性,实现一个半虚拟化的环境,这个环境能够方便地在各台主机上迁移和执行
9hills
2015-02-04 09:37:24 +08:00
三个定位完全不同的东西
helone
2015-02-04 09:44:06 +08:00
vagrant其实就是虚拟机,依赖几个虚拟机软件,更适合开发环境,打包的镜像也比较大,因为他就是整个虚拟机,包括驱动什么的都要打包
docker是个容易,只需要Linux内核就可以运行,可以方便的迁移,保存和复制,更适合生产环境部署,应用隔离等
puppet没接触过
xuxu
2015-02-04 09:47:13 +08:00
这个问题太高深了
1. docker是容器,用来虚拟程序运行环境
2. puppet是运维自动化部署工具
3. vagrant是虚拟机管理工具,依赖虚拟机

如果非要说像, docker和vagrant都可以用来管理运行程序需要的环境。
0bit
2015-02-04 10:07:03 +08:00
最近折腾了一下docker,还是觉着开发环境用vagrant最省心
SharkIng
2015-02-04 10:11:48 +08:00
@xuxu 因为看到说docker可以很容易的迁移环境,那么难道不是可以理解为类似puppet么?自动化在不同机子上部署相同的环境?
tini9
2015-02-04 10:23:09 +08:00
docker不适合程序员
xuxu
2015-02-04 10:58:02 +08:00
@SharkIng
分层说:
vagrant 管的是虚拟机
puppet 处理的是程序部署
docker 打包程序依赖环境
tabris17
2015-02-04 11:00:50 +08:00
@SharkIng puppet你就理解为一种批处理脚本吧,和docker完全没有关系
kofj
2015-02-04 11:14:09 +08:00
@SharkIng puppet没用过,暂且不谈.说说docker和vagrant吧.首先docker和vagrant就不是一类工具,非要找类似的话,boot2docker和vagrant算是一类吧,都是管理虚拟机的,只不过boot2docker也就只能使用boot2docker这么一个box.
先看看docker的官方定义:An open platform for distributed applications for developers and sysadmins.清晰明了,docker是个平台.至于vagrant,官方只是说了它能做什么:Create and configure lightweight, reproducible, and portable development environments.按我理解它只是个开发环境的配置管理工具.一平台一工具,两者的区别显现出来了.至少对我来说,vagrant跑起来后box里面只是个开发环境,和实际的生产环境还是有着差异的.至于docker,配置的好的话,你的开发环境和应用是能够直接打包丢进生成环境使用的,相交于vagrant能够再进一步的提高生产效率,避免生产\测试\开发环境之间的差异而造成的各种问题.相信大家应该是遇见过这种问题的:测试组的同事来找你,报一堆奇怪的bug,而你在开发环境里面怎么都复现不了这些bug.
Vagrant was started in January 2010,docker launched in March 2013.显而易见,docker更年轻,作为新生事物也并不完善,据说是目前最好docker管理工具shipyard个人觉的其实并不好用,给人的感觉实在是太简陋了.vagrant作为一个管理工具对我来说还是比较好用的,网上一堆现成的box可以下载,比如说Laravel官方提供的Homestead能够让新手更容易的入门,不至于因为开发环境部署问题而止于门外.Docker官方仓库现在虽说有不少的镜像提供,但更多的是基础镜像.不过你要是熟悉以后,docker相对而言其实更方便,shipyard在官方仓库有镜像提供.gogs则是提供dockerfile.
简单说,docker可以提供一条龙服务.vagrant则是让你在家(本机)玩儿的更开心.
咦~我怎么闻到一股知乎的味道.不行,得加条规则屏蔽了它.最后AD一下,v社有收人的嘛?本人会PHP,最近新开始学Laravel(惊叹),golang(能看懂,会写点,beego用的心塞,效率低下).
binux
2015-02-04 11:37:35 +08:00
昨天还看到有人在知乎上问,docker 和 virtualenv 有什么区别。
这些东西都有什么相同点啊!
hahastudio
2015-02-04 11:44:59 +08:00
@binux 隔离了“命名空间”?
jyoe
2015-02-04 11:52:18 +08:00
与其从某个环境把code拔下来 不如把整个环境都拿下来测试要来的准。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/168074

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX