分享 Nanobox 最新的 Docker 本地开发工具。for rails

xds2000 · 2015年11月22日 · 最后由 yanhao 回复于 2015年11月23日 · 3810 次阅读

Eliminate Environment Complexity

https://desktop.nanobox.io/how-nanobox-works/

推荐给大家。

docker 还没体会到他的好处 试试这个工具 呵呵谢谢

Vagrant + Bash 已经满足我的需求了。

依然不太认同 Docker 用于开发环境……

#3 楼 @cassiuschen 开发环境应该和生产环境一致,如果生产环境用 docker,开发环境也应该用。

我倒是对生产环境用 docker 不太感兴趣,因为现在大多数情况还是跑在虚拟机上,直接提供 container 部署的也没几个。AWS 把 docker 跑在 EC2 上,优势是它的调度和扩展功能。

我觉得 docker 比较实用的地方是各种测试和打包环境。

#4 楼 @rei 测试和打包确实是,不过 docker 目前已经很方便了,至少 mac 上用着非常舒服了,可以推荐用了

#4 楼 @rei docker 用在生产环境跟虚拟机没什么冲突,docker 本身也是跑在虚拟机里。docker 的价值在于提供的最简洁最轻量的统一运行环境,在这之上的调度和扩展能力是虚拟机不能比的

#4 楼 @rei 不,这个一致性不一定是要放在开发环境上来说的,照我的理解开发环境应该就是宿主机的这一套,而同一生产环节的步骤应该是 staging 而不是开发环节…… Docker 改变的不是软件运行环境而是软件交付方式和扩展方式,这些都和统一环境无关……

#6 楼 @suupic 我还没有调度和扩展需求,有这个需求的时候也是根据基础设施提供商提供什么决定的,例如要用 AWS container service 就用 docker,要用 heroku 就用 Procfile。虽然 docker 看上去很有前景,但直接支持 docker 部署的提供商还不多。本地搭环境,比 vagrant 麻烦多了。

#7 楼 @cassiuschen 开发环境和生产环境不统一就等着麻烦吧。

我期望着 Docker 改变软件交付方式,这个在 1 年前就开始追捧了, 但当时也就实现了个打包格式,还没有什么管理和调度工具,也没有什么提供商支持。不少人投入进去,发现一大堆轮子需要发明。这两年可以看到这方面的工具一直在做,然后配置文件一大堆。那我不如再等几年,先用着现在最实用的。

#3 楼 @cassiuschen 如果觉得开发环境没必要用 docker,那我猜你可能不太做测试。如果做了很多的测试,那就会很在意开发环境和线上的一致性,否则测了半天,上线根本不是那么回事,事情就糟了

也可能,你让自己的开发用操作系统和线上对齐,然后就觉得没问题了。但这个其实也是不靠谱的做法,主要是开发环境出于使用便利性,会多出很多东西,dll hell 的问题其实可以出现在 jar 和 rpm 上(我遇到过),并且不排除出现在 gem 上

还有一个因素——多项目情况,除了很小的产品,一般的产品都不会只有一个应用,所以开发者的笔记本上会有多个项目,这时对环境隔离的要求就更必要了

开发环境不用 docker 只有一个原因是可以接受的——开发用了 vagrant,也就是使用了更重量级的方式确保隔离开发的自测环境,这时确实可以不必用 docker,不过 vm 很重,用 docker 可以更轻量级,哪怕是 boot2docker(现在可以用 docker-machine)也比多个 virtualbox 要好些

#9 楼 @rei 有没有兴趣聊聊你期待的工具是什么样子的?

#10 楼 @fsword 看文档说 boot2docker 和 docker-machine 都使用 VirtualBox。

我期待像 Heroku 那样。

#13 楼 @rei docker-machine 在驱动 virtualbox 的时候会借助 boot2docker 的现有资源(比如 boot2docker.iso 之类),不过它可以适配其它 provider,因此更广泛一些

Heroku 是个好东西,虽然我一直没用它......

#14 楼 @fsword Vagrant 也支持其他 Provider,例如 Docker ……

#15 楼 @rei 这个支持其实已经很不自然了,特别是涉及到容器协作的时候,不如直接 docker-machine + docker compose

BTW:compose 未来可能会成为标准,docker 已经在整合各路神仙了

好像只要你在源代码里改动一个字符,Nanobox 都要重新 build container, 恐怕很多人没耐心等着这个。在开发环境中使用 Docker,我觉得还是直接 mount 一个 folder 比较好。

我在开发环境中用 Docker 有一段时间了,感觉最大的好处就是能够更快的搭建开发环境,比如,pull 一个 MySQL 的 image,往往比安装配置 MySQL 更快,就是你有 Chef 之类的工具安装配置 MySQL。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册