使用docker部署在MacOS上部署minecraft服务器
本篇文章介绍使用docker容器的方式在MacOS操作系统上搭建最新版本minecraft服务器。事情的起因是租用的阿里云到期了,正好手中有一台闲置的M1芯片mac mini,且自己有内网穿透的软件,因此决定将它们用于搭建服务器,和朋友一起玩儿。
如果想在docker中用linux镜像运行服务,而不是用docker中现成的镜像,可以看看此文。
一些准备工作
- 需要安装docker hub,可以在官网上下载无脑安装。
- 需要准备好minecraft的服务器包,也就是从minecraft下载server.jar,具体版本看个人喜好。
- 需要一个内网穿透工具,我个人使用的是cpolar,免费版本就可以使用,只不过它的地址会经常变化。付费版本可以申请一个绑定地址,体验会好一些。
搭建环境
准备centos系统
docker中是有现成的minecraft镜像,但是我还是决定用linux系统的镜像,然后在系统中手动运行minecraft,主要是这样方便将来做一些个性化的操作。
操作系统选用centOS,直接拉取镜像即可:
shell
docker pull centos:latest
等待镜像拉取完毕之后,运行该镜像即可:
shell
docker run --privileged -it -d --name minecraft-server -p 25565:25565 centos
参数解释 :
--privileged的含义是以特权模式运行容器,允许容器内的进程拥有主机的特权权限,如访问硬件设备等。如果没有相关的需求,可以不加这个参数。
-it的意思是以交互模式运行容器,可以与容器通过终端进行交互。
-d的意思是以后台(守护)模式运行容器,使容器可以在后台运行而不阻塞终端。
--name是给容器指定了一个名称,叫minecraft-server。可以根据自己的喜好随便取名字。
-p 25565:25565非常重要,它的意思是将主机的25565端口映射到容器的25565端口,允许通过主机的该端口访问容器内的服务。25565是minecraft的默认端口,若不这么做则无法访问到minecraft服务器。
至此,一个干净的centos系统就运行起来了,接下来要在该系统中做一些准备工作。
安装java环境及其他组件
java环境
mc服务器的运行是需要Java环境的。个人感觉最讨巧的方法就是直接从官网下载java,然后直接解压缩配置环境变量,简单粗暴有成效。
bash
# 我想将java环境以及minecraft都放在根目录下,因此我在根目录中创建了对应的文件夹,如有个人喜好,可以看心情更换文件路径
cd /
mkdir java
cd java
# 下载Java文件
curl https://download.oracle.com/java/21/latest/jdk-21_linux-aarch64_bin.tar.gz -o /java/jdk-21_linux-aarch64_bin.tar.gz
# 解压缩
tar -zxvf jdk-21_linux-aarch64_bin.tar.gz
# 进入解压缩出来的文件内
cd jdk-21.0.3
# 获取一下当前的文件路径,我直接复制了pwd返回的内容,一会儿配置环境变量的时候会方便不少
pwd
注意:
在oracle官网上下载java的时候,需要留意一下需要下载的Java的版本,因为windows、linux、macOS对应的下载文件是不同的。以我的macOS系统为例,intel芯片和apple芯片的下载文件也是不同的。如果是apple芯片的电脑,可以使用上述下载链接,但是如果是intel芯片的电脑,需要修改一下下载链接。
下一步是配置Java的环境变量,打开profile配置文件。
bash
vi /etc/profile
在文件的末尾加上Java环境变量的配置。
bash
export JAVA_HOME=「刚才准备Java环境,输入pwd后复制的内容」
export PATH=$JAVA_HOME/bin:$PATH
退出编辑器,然后让profile文件生效。
bash
source /etc/profile
这时候,在命令行中输入java --version,如果能返回出Java的环境信息,说明这个Java环境是OK了的。这一步就算完成了。
安装screen
安装screen的目的是能让minecraft的进程更好地在后台运行,避免出现关闭命令行后服务器也跟着关闭的情况。
bash
yum install screen
运行minecraft服务
首先通过screen创建一个后台窗口,然后在该窗口内运行minecraft服务即可。这里默认已经下载好官网的minecraft.java文件了,并且将该文件放在了/minecraft文件夹下。
bash
screen -S minecraft-screen
cd /minecraft
java -Xmx16G -jar server.jar
命令解释
java后面的-Xmx参数是控制jvm虚拟机的内存大小的上限的。我这边使用16G是因为我给docker容器分配了20G的内存,然后我要留一些内存跑其他的服务,因此分配了16G,具体分配多少内存可以根据自己的设备情况而定。在网上能查到的启动命令还会有一个-Xms参数,是控制jvm虚拟机的内存大小下限的,其实可以不写,问题不大。
第一次执行上述命令之后,会发现开服失败,这是因为没有同意mojang的协议导致的。在minecraft文件夹中找到eula.txt文件,将其中的eula=false改为eula=true即可,保存完毕后再次运行java -Xmx16G -jar server.jar命令即可。