V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
xucheng
V2EX  ›  分享创造

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

  •  
  •   xucheng ·
    xu-cheng · 2015-11-21 14:38:36 +08:00 · 2898 次点击
    这是一个创建于 3293 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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   ·   实用小工具   ·   3331 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 12:21 · PVG 20:21 · LAX 04:21 · JFK 07:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.