3分钟用Docker优雅搭建一个Minecraft服务器

作者:祝剑锋,毕业于西安电子科技大学,通信工程学院硕士,2015年8月加入网易蜂巢项目组,参与蜂巢核心功能的设计与开发工作。喜欢思考,热衷于写代码,开发一些实用的小工具。

 

网易蜂巢团队:为企业提供专业容器云平台,深度整合IaaS、PaaS及容器技术,提供弹性计算、DevOps工具链、微服务基础设施等服务,帮助企业解决IT、架构及运维等问题,使企业更聚焦于业务,是新一代的云计算平台。

 

  1 写在前面
 

作为一名资深游戏玩家,初次接触Minecraft(我的世界)时我是拒绝的,但玩了一段时间之后便欲罢不能。Minecraft(以下简称MC)作为一款沙盒类游戏,具有极高的自由度,想玩什么完全取决于你。你可以进行传统的荒野求生,打怪升级,可以建造各种风格的建筑,可以成为红石达人,实现各种自动化等等。这是一款最典型的“别人的游戏”,有大神在游戏里造了一个32位的计算机你能信?别人的世界,哦不,是我的世界就先介绍到这里。   

 

言归正传,前段时间用网易蜂巢的容器搭了一个Minecraft原版生存服,那性能杠杠的。玩起来那叫一个6。想到广大小伙伴要么玩的单机,没法跟好基友一起愉快地玩耍;要么玩着别人开的有各种限制的服,各种不爽。因此特地整理教程一篇,造福广大 MCers。

 

  2 如何搭建
 

众所周知,MC是JAVA编写的,无论是客户端还是服务端都直接是个jar包,因此前提条件就是需要有个jre。本人的MC服完全是手动搭建起来的,先跟大家简单讲下手动搭建的步骤。

 

  1. 创建一个Linux容器,ubuntu、debian、centos看你喜欢什么,我用的是debian
  2. 安装jre或jdk
  3. 安装基本的工具,tmux、vim等
  4. 下载Minecraft的服务端文件
  5. 使用tmux将Minecraft服务端文件运行起来
  6. 进行基本的服务器配置

 

这里为什么要用tmux呢?因为我们开的是游戏服呀,我们要在不停服的前提下执行一些操作,比如添加op,ban掉某个ip等等,之后要让其继续在后台运行。tmux刚好满足这个需求,当然其他的工具也可以,只不过本人习惯用tmux而已。 

 

可以看到手动操作还是比较麻烦的,那有更简单的方法嘛?答案是肯定的,网易蜂巢是基于Docker的容器云平台,利用Docker的特性,我们可以通过Dockerfile制作MC服务器镜像,然后使用该镜像创建一个容器就可以了,闲话不多说,直接上Dockerfile。

 

 

介绍下这个Dockerfile,因为蜂巢官方有jdk的镜像,所以直接拿来用作基础镜像,然后装一些基本的工具。第2部分是创建一个目录用作工作目录,并将服务器文件下载到该目录下。第3部分是创建并设置MC服务器需要的文件,下面再具体讲。第4部分表示容器启动时的入口,使用tmux让服务端运行在后台,同时启用ssh登录。因为不确定大家创建容器时使用的规格,所以启动服务器时,并没有指定jvm的参数。   

 

其中第2步,为了便于演示,我将服务器文件上传到了oschina的git库中。当然这里你可以替换成你自己想要下载的服务器文件地址,如果本地已经有下载好的文件,可以直接上传到容器中。

   

下面讲一下MC服务器需要的文件,其实这些文件的名字就很明显的告诉了你它们的作用。

 

  • 第一个文件是eula.txt,字面意思,最终用户许可协议,你必须同意协议(文件中设置eula=true)才能正常启动服务器。当你没有创建该文件,服务器在第一次运行时,会自动创建eula.txt,同时告诉你必须同意协议才能继续启动。
  • 另外一个很重要的文件是server.properties,这个文件里存放服务器相关的各种参数配置。具体各个参数的意义,大家可以直接去wiki查看。这里只讲一个跟登录相关的参数online-mode=true,该参数表示是否开启线上验证,什么意思呢,当开始线上验证,对每个登录的账号,服务器都会到Minecraft的账号系统里验证该账号是否合法,如果不合法会被拒绝登录。如果你希望在服务器启动时就关闭线上验证,可以在第3部分增加RUN echo online-mode=false > server.properties即可,但是当关闭线上验证时,则任何登录的账号都不会验证,直接登录的,也就是说你只要知道别人的用户名,就可以直接登录别人的账号,因此建议大家开启线上验证。
  • 其他文件,如ip黑名单banned-ips.json、账号黑名单banned-players.json、op列表ops.json等,这里就不详细讲了,有兴趣的同学可以去wiki看下,文件结构都是很简单的。

 

  3 开启MC之旅
 

使用Dockerfile构建自定义镜像,并用构建好的镜像创建容器.  

 

等容器创建完成后,打开Minecraft客户端,输入刚创建的容器外网ip,开启你的Minecraft之旅吧。

 

友情提示:众所周知,Minecraft是很吃内存的,因此还是建议大家使用内存1G以上的规格。

 

  4 后记
 

本教程只是教大家用最简单的方式创建一个MC服务器,当然利用脚本可以让创建以及启动过程更优雅,定制性更强。例 如,利用Dockerfile的环境变量ENV配合脚本,可以生成一个完全定制化的server.properties。关于MC服务器如何配置的知识,后面有机会再跟大家分享。


时间: 2024-09-30 13:02:55

3分钟用Docker优雅搭建一个Minecraft服务器的相关文章

3分钟用Docker搭建一个Minecraft服务器_docker

1 写在前面的话 作为一名资深游戏玩家,初次接触Minecraft(我的世界)时我是拒绝的,但玩了一段时间之后便欲罢不能.Minecraft(以下简称MC)作为一款沙盒类游戏,具有极高的自由度,想玩什么完全取决于你.你可以进行传统的荒野求生,打怪升级,可以建造各种风格的建筑,可以成为红石达人,实现各种自动化等等.这是一款最典型的"别人的游戏",有大神在游戏里造了一个32位的计算机你能信?别人的世界,哦不,是我的世界就先介绍到这里. 言归正传,前段时间用网易蜂巢的容器搭了一个Minecr

nginx-window7下搭建一个Nginx服务器 需要哪些安装环境 并做什么样的配置 急等!

问题描述 window7下搭建一个Nginx服务器 需要哪些安装环境 并做什么样的配置 急等! 需要搭建一个web app测试服务器,要求能处理高并发.最好可以配置一个域名服务测试一下. 解决方案 参考:http://www.cnblogs.com/hxxy2003/archive/2012/09/20/2695254.htmlhttp://blog.csdn.net/dhx20022889/article/details/30219471 解决方案二: 不过Windows 7是客户端操作系统,

搭建一个后台服务器:服务端(异步,大并发)

上篇的阻塞模式下服务器的并发只有几K,而真正的server 像nginx, apache, yumeiz 轻轻松松处 理几万个并发完全不在话下,因此大并发的场合下是不能用阻塞的. 1W的并发是一个分隔点,如果单进程模型下能达到 的话,说明至少在服务器这块你已经很厉害了. 服务器开发就像一门气功,能不能搞出大并发,容错性处理得怎么样,就是你有没有内功,内功有 多深. 异步模式是专门为大并发而生,linux下一般用 epoll 来管理事件,下面就开始我们的异步大并发 服务器实战吧. 跟阻塞开发一样,

搭建一个后台服务器:服务端(阻塞)

为什么 要在标题后面加个"阻塞"呢,因为系统为了增大并发,减小等待(阻塞),建立了另一种 事件模式,后文将介绍,这里只介绍阻塞的模型. 阻塞服务器要干的事大致可以分为以下几步 : 1.创建服务端监听连接 2.产生用户连接 3.接收用户请求 4.发送返回给 用户 敲码过程如下: 设置监听地址与端口: addr_server.sin_family = AF_INET; addr_server.sin_port = htons( port ); addr_server.sin_addr.s_

搭建一个后台服务器:客户端

上篇规定的协议请求部分: request: username/password, 约定username与password  各占32个字节(联同末位0) 可以将客户端的逻辑设计成: 1.将 username,password  封装进buffer 2.连接服务端 3.发送buffer 4.接收二 进制的系统当前时间 5.显示时间 代码如下: 服务端地址设置部分: addr_server.sin_family = AF_INET; addr_server.sin_port = htons( por

搭建一个后台服务器:引子

最近去了几家公司面试,有一些大公司(比如企鹅)的考核内容真心弱智,考的都是些算法,尼玛 ,拿一个刚毕业的学生来做说不定也可以过的,看来本来就不是在招搞服务器的,举个例子,企鹅多个 部门都曾出的一道题:如何知道集合A,B中的相关性. 意思就是哪些元素在A,B之中都有,哪些 元素在A,B中不都出现. 其实解法很简单,学过算法的完全可以做到 .我们知道集合具有互异 性,就是集合中的元素只能出现一次,可以建一个map< key, value >,是标准库的还是自建一 个红黑树都无所谓, 将A,B集合中

搭建一个后台服务器:服务端代码(异步,大并发)

01.#include <stdio.h>02.#include <time.h>03.#include <fcntl.h>04.#include <stdlib.h>05.#include <errno.h>06.#include <string.h>07.08.#ifndef WIN32 09.#include <unistd.h>10.#include <sys/epoll.h>11.#include &

Moving to Docker(二)搭建一个私有registry服务

本文讲的是Moving to Docker(二)搭建一个私有registry服务,[编者的话]本文是<Moving to Docker>系列的第二篇,这个系列的文章讲述了创业公司如何把基础服务迁移到Docker上,以及迁移过程中的经验教训.本文主要介绍了如何安装.测试和使用私有registry服务,其中也包含了从DigitalOcean选VPS和注册Amazon S3服务. 这是迁移到Docker系列的第二篇,整个系列都是介绍我们公司是如何把基础设施从PaaS迁移到Docker的. 第一篇:介

美橙互联教你5分钟快速搭建一个微餐饮网站

伴随着移动互联网的快速发展.智能手机的普及,生活中诞生了一类新的族群:低头族.数据显示,3721.html">2014年上半年,我国网民每周人均手机上网时长约12小时,八成手机网民每天至少使用手机上网1次,近六成手机网民每天使用手机上网多次. "低头族"越发壮大,改变的不止是人们的消费习惯,也为移动餐饮行业的营销推广服务等各方面留下诸多空白点.传统餐饮商家只有抓住新的变革机遇,善用互联网思维和工具开启微餐饮,才能突破传统营销与服务,开创经营新模式. 那么,如何搭建一个微