用 Vagrant 在 DigitalOcean 上一键配置 Minecraft 服务器 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
xucheng
V2EX    分享创造

用 Vagrant 在 DigitalOcean 上一键配置 Minecraft 服务器

  •  
  •   xucheng
    xu-cheng 2015-11-21 14:38:36 +08:00 3277 次点击
    这是一个创建于 3691 天前的主题,其中的信息可能已经有所发展或是发生改变。
    5 条回复    2015-11-29 22:10:13 +08:00
    KKKKKK
        1
    KKKKKK  
       2015-11-21 15:48:36 +08:00 via Android
    比 Docker 好?
    imdjh
        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 大法好!
    imdjh
        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
    xucheng
        4
    xucheng  
    OP
       2015-11-21 22:21:31 +08:00
    不用 docker 是因为这个脚本主要自用,不想特别折腾。同时是为了省内存。

    > 这个文件已经3年没有更新了。

    那是一个 dummy 的空文件。真正的 base 是 DO 提供的镜像。
    imdjh
        5
    imdjh  
       2015-11-29 22:10:12 +08:00
    @xucheng 学习了,看来这是个 Vagrant 的 hack 用法咯

    >同时是为了省内存。

    这点我同意。

    但是用户**学习成本高**,而且**不容易定制**的弱点,你还是同意的吧(我们就说版本号吧)。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5207 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 64ms UTC 06:00 PVG 14:00 LAX 22:00 JFK 01:00
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86