1
KKKKKK 2015-11-21 15:48:36 +08:00 via Android
比 Docker 好?
|
2
imdjh 2015-11-21 22:06:26 +08:00
@KKKKKK 我觉得你说的不合理,身为 docker 技术的拥护者和实践者,我首先表示涨见识了, Vagrant 也能一定程度的运用在快发上。
0.LZ没有细说技术的细节,我稍微看了下(其实我用 docker 前也玩过 Vagrant 流浪汉),总的来说是利用了 Vagrant 的一个插件,将 DO 服务器作为"虚拟机"启动 Droplet ,是很值得肯定的有效玩法。 1. VagrantFile 基本上就是个 ruby 脚本,需要一定的知识作为基础(不然看不懂);相比 Dockerfile 是类似宏调用的 DSL ,学习成本较低(但是你要说 COPY 和 ADD 的区别的话,其实也是满麻烦的,你知道 WORKDIR 能自动创建文件夹么) 2. DO 的 Droplet 实际上是虚拟机啦,你说我在 DO 上开一个 docker Droplet 运行一个MC镜像。好吧,这两者有何不同。实际上用 Vagrant 启动的人家还自带 init 进程呢(我知道有 baseimage 啦,但是有多少能用的镜像是用 baseimage 作为基础的呢)。而且MC服务器是个非常吃内存的家伙,基本上开了MC的容器,共存的容器会挺可怜的,谁知道下一个被OOM的是谁? 3.说了那么多实际上,技术上的主要区别我觉得在于被初始化的脚本( Vagrant 中是 vm.Provision ),你有没有考虑守护进程的配置,服务出错的调试方案,防火墙配置,软件的定期更新,软件的优化,更在于这个项目本身的易读易改性,谁都不想照着本 500 页的手册页只为了编写一个 APP 是吧(向卡西欧图形计算器致敬)。个人以为 docker 这方面做的很好,比如我只需要在启动时配置“环境变量”就能决定我开哪个版本的服务器(超赞是吧 ;)),而无需触及启动脚本本身。 Extra. 但我看到一个弱点, Vagrant 的那个 DO 插件在自启时会下载后缀是 box 的虚拟机文件(类似于 docker 中的镜像,但是 docker 镜像可以是分成的,感谢 aufs ),这个文件已经3年没有更新了。盆友们,整整3年啊,就算你 bootstrap 的第一行命令能修复 heatbleed, shellshock,但是这肯定是要比 docker 镜像处理的时间长的,毕竟镜像的层能复用,能并行下载各层,而且更新也很轻巧。 TL,DR; 还是我 docker 大法好! |
3
imdjh 2015-11-21 22:11:23 +08:00
上面唠叨的太多,下面是一个我用过得 MC 服务器的 docker 镜像实现(任意版本,同样是从亚马逊 S3 下载服务器 jar ):
https://hub.docker.com/r/itzg/minecraft-server/ 以及我自己基于这个定制的,无需从 S3 下载的 1.8.1 版本( out dated too much ,国内做做参考还是够得): https://github.com/imdjh/mymc |
4
xucheng OP 不用 docker 是因为这个脚本主要自用,不想特别折腾。同时是为了省内存。
> 这个文件已经3年没有更新了。 那是一个 dummy 的空文件。真正的 base 是 DO 提供的镜像。 |