3分钟⽤Docker搭建⼀个Minecraft服务器
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。
Docker,Minecraft服务器
介绍下这个Dockerfile,因为蜂巢官⽅有jdk的镜像,所以直接拿来⽤作基础镜像,然后装⼀些基本的⼯具。第2部分是创建⼀个⽬录⽤作⼯作⽬录,并将服务器⽂件下载到该⽬录下。第3部分是创建并设置MC服务器需要的⽂件,下⾯再具体讲。第4部分表⽰容器启动时的⼊⼝,使⽤tmux让服务端运⾏在后台,同时启⽤ssh登录。因为不确定⼤家创建容器时使⽤的规格,所以启动服务器时,并没有指定jvm的参数。
其中第2步,为了便于演⽰,我将服务器⽂件上传到了oschina的git库中。当然这⾥你可以替换成你⾃⼰想要下载的服务器⽂件地址,如果本地已经有下载好的⽂件,可以直接上传到容器中。
下⾯讲⼀下MC服务器需要的⽂件,其实这些⽂件的名字就很明显的告诉了你它们的作⽤。
第⼀个⽂件是,字⾯意思,最终⽤户许可协议,你必须同意协议(⽂件中设置eula=true)才能正常启动服务器。当你没有创建该⽂件,服务器在第⼀次运⾏时,会⾃动创建,同时告诉你必须同意协议才能继续启动。
另外⼀个很重要的⽂件是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之旅
等容器创建完成后,打开Minecraft客户端,输⼊刚创建的容器外⽹ip,开启你的Minecraft之旅吧。
友情提⽰:众所周知,Minecraft是很吃内存的,因此还是建议⼤家使⽤内存1G以上的规格。
4 后记
本教程只是教⼤家⽤最简单的⽅式创建⼀个MC服务器,当然利⽤脚本可以让创建以及启动过程更优雅,定制性更强。例如,利⽤Dockerfile的环境变量ENV配合脚本,可以⽣成⼀个完全定制化的server.properties。关于MC服务器如何配置的知识,后⾯有机会再跟⼤家分享。希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。在此也⾮常感谢⼤家对⽹站的⽀持!