#3 楼 @cassiuschen 开发环境应该和生产环境一致,如果生产环境用 docker,开发环境也应该用。
我倒是对生产环境用 docker 不太感兴趣,因为现在大多数情况还是跑在虚拟机上,直接提供 container 部署的也没几个。AWS 把 docker 跑在 EC2 上,优势是它的调度和扩展功能。
我觉得 docker 比较实用的地方是各种测试和打包环境。
#7 楼 @cassiuschen 开发环境和生产环境不统一就等着麻烦吧。
我期望着 Docker 改变软件交付方式,这个在 1 年前就开始追捧了,但当时也就实现了个打包格式,还没有什么管理和调度工具,也没有什么提供商支持。不少人投入进去,发现一大堆轮子需要发明。这两年可以看到这方面的工具一直在做,然后配置文件一大堆。那我不如再等几年,先用着现在最实用的。
#3 楼 @cassiuschen 如果觉得开发环境没必要用 docker,那我猜你可能不太做测试。如果做了很多的测试,那就会很在意开发环境和线上的一致性,否则测了半天,上线根本不是那么回事,事情就糟了
也可能,你让自己的开发用操作系统和线上对齐,然后就觉得没问题了。但这个其实也是不靠谱的做法,主要是开发环境出于使用便利性,会多出很多东西,dll hell 的问题其实可以出现在 jar 和 rpm 上(我遇到过),并且不排除出现在 gem 上
还有一个因素——多项目情况,除了很小的产品,一般的产品都不会只有一个应用,所以开发者的笔记本上会有多个项目,这时对环境隔离的要求就更必要了
开发环境不用 docker 只有一个原因是可以接受的——开发用了 vagrant,也就是使用了更重量级的方式确保隔离开发的自测环境,这时确实可以不必用 docker,不过 vm 很重,用 docker 可以更轻量级,哪怕是 boot2docker(现在可以用 docker-machine)也比多个 virtualbox 要好些
好像只要你在源代码里改动一个字符,Nanobox 都要重新 build container, 恐怕很多人没耐心等着这个。在开发环境中使用 Docker,我觉得还是直接 mount 一个 folder 比较好。
我在开发环境中用 Docker 有一段时间了,感觉最大的好处就是能够更快的搭建开发环境,比如,pull 一个 MySQL 的 image,往往比安装配置 MySQL 更快,就是你有 Chef 之类的工具安装配置 MySQL。