1
apai 2014-07-18 23:27:15 +08:00 1
开发环境共享,一般用vangrant多一些
第二个问题,docker也不好解决把 |
2
rio 2014-07-18 23:38:40 +08:00 8
场景一:基本可行,但在 OS X 和 Windows 上需要借助于虚拟机(主要是 VirtualBox,后续会有 VMware 支持)。Docker 官方提供的工具是 boot2docker,一个轻量级的 Linux 虚拟机镜像用于运行 Docker 服务端,然后 OS X 和 Windows 通过 Docker 客户端访问,项目主页 http://boot2docker.io ,GitHub 地址 https://github.com/boot2docker 。当然你也可以选择 Vagrant + Docker 或者 CoreOS 的方式搭建开发环境。
场景二:看情况。Docker 对 Linux 服务器内核有要求,官方有个支持的 Linux 发行版列表 https://docs.docker.com/installation/#installation 。不过个人不建议在任意环境里部署,Docker 的一大优势就是 reproducibility,任意环境里部署可能会遇到坑。最好是能选择个别官方支持的发行版,然后要求客户提供对应的部署环境。如果性能不是问题,甚至可以部署在虚拟机里面以解决版本问题。 (利益相关申明:我是 boot2docker 项目的 contributor 之一,以上观点仅代表个人。) |
3
liubin 2014-07-19 00:59:03 +08:00 1
1.
关于第一个问题,像2楼所说,如果你是Linux的话,还是非常赞的。如果是Windows或OS X的话,则稍显麻烦。我用OS X,但我讨厌boot2docker,所以我在OS X里装了Ubuntu,在里面装了Docker。基本上Docker镜像build之后,主需要把端口转发出来(Docker容器->虚拟机或者再到OS X)。 2. 答案是肯定的,当然是服务器要是Linux。Docker可以做到build once,run anywhere。 Docker给开发部署都带来了方便,尤其是部署。但是给运维可能会带来麻烦,只是是暂时。 不过结论还是:Docker值得你拥有。 |
5
lightening 2014-07-19 01:21:23 +08:00 via iPhone 1
不能。Docker 不是开发环境工具。如果你需要统一开发环境,用 vagrant.
关于部署,docker 只支持 Linux. |
6
hustlzp OP @lightening 恩。看来也需要尝试下Vagrant。
|
7
liubin 2014-07-19 08:41:40 +08:00
@lightening 第一各结论不敢苟同。Vagrant只是一个虚拟机管理软件它的特点是能用代码复现一切,从这一点来说,Docker也能做到。而且Docker容器比虚拟机更小,更容易共享,而且具有可移植性,启动速度也快很多。用来开发完全没问题。
@hustizp Vagrant 也是非常不错的工具。 Docker也好,虚拟机也好,选择合适自己的最重要。 |
9
lightening 2014-07-19 17:18:42 +08:00 via iPhone 1
@liubin Docker 做开发的话,怎么写入镜像?每次对文件系统做修改都要加一个 layer 吗?
Docker 的用法是一次把所有的东西写成 dockerfile 直接一次成型,如果做了点修改,想保存下来必须新建 layer。这样对于频繁写入的开发环境显然是不合适的。 |
10
tonyluj 2014-07-19 20:53:27 +08:00
开发的话,很显然用vagrant
docker方面,同意 @lightening 在windows下面用docker的话,就是虚拟机里面再嵌入一个docker,还不如直接用vagrant vagrant相对于virtualbox只是方便一点,直接用vbox也是不错,只不过性能没kvm好,更不及docker |
11
liubin 2014-07-21 11:21:32 +08:00
@lightening Docker镜像是分层的,共享的,如果base镜像稳定的话,每次创建新镜像是很快的。所以这不是问题。虚拟机才有此问题(box命令除外)。
|
12
lightening 2014-07-21 15:22:21 +08:00
@liubin 但是你每一次开发完一点东西想保存的时候怎么办?
|
13
liubin 2014-07-21 16:48:42 +08:00
@lightening 保存什么?代码?
我觉得代码的commit和Docker镜像的创建可以分开进行的。 开发的时候可以通过-v选项在host和container之间共享文件夹,实际代码保存一份。build镜像的时候拷贝到镜像里去。 |
14
lightening 2014-07-21 17:25:17 +08:00
@liubin 任何文件呀。开发的时候总是要频繁更改镜像的文件系统的。每次修改都创建一个 layer 太麻烦。
|
15
liubin 2014-07-21 18:35:08 +08:00
@lightening 我觉得这个问题是可以避免的,使用共享文件夹。Docker容器就是一个已停用程序运行环境。
|
16
dingyaguang117 2014-07-21 18:52:10 +08:00
生产环境系统都是 CentOS 5 怎么办?
|
17
lightening 2014-07-21 19:19:21 +08:00 via iPhone
@liubin 你用 ruby 的话需要安装 gem, 用 python 需要用 pip.
|
18
liubin 2014-07-22 08:42:43 +08:00
@lightening 你不会每天都更新Gemfile吧?Bundle没试过,貌似可以像NPM那样安装到当前文件夹,PIP不熟悉。
|
19
julyclyde 2014-08-02 15:31:22 +08:00
@dingyaguang117 centos5就只好格式化换装了。这系统实在太旧了……
|
20
JohnDeng 2014-08-02 16:31:22 +08:00
对于隔离跟共享开发环境,Vagrant才是真爱,使用Docker还是在需要测试分布式系统的时候才能发挥最大效益。
|
22
undeflife 2014-08-02 17:03:25 +08:00
vagrant很痛苦 在windows上.
virtualbox的shared folder有严重的性能问题 Mac OS 还能用nfs ,windows上只能用smb或者rsync。 smb性能也不行,而碰到文件多层次多的时候 vagrant的rsync也不太正常 |