使用docker部署在MacOS上部署minecraft服务器

使用docker部署在MacOS上部署minecraft服务器

本篇文章介绍使用docker容器的方式在MacOS操作系统上搭建最新版本minecraft服务器。事情的起因是租用的阿里云到期了,正好手中有一台闲置的M1芯片mac mini,且自己有内网穿透的软件,因此决定将它们用于搭建服务器,和朋友一起玩儿。

如果想在docker中用linux镜像运行服务,而不是用docker中现成的镜像,可以看看此文。

一些准备工作

  1. 需要安装docker hub,可以在官网上下载无脑安装。
  2. 需要准备好minecraft的服务器包,也就是从minecraft下载server.jar,具体版本看个人喜好。
  3. 需要一个内网穿透工具,我个人使用的是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命令即可。

相关推荐
我们的五年1 小时前
内网穿透:打破网络限制的利器
服务器·网络·生活
Channing Lewis1 小时前
如何用python将pdf转为text并提取其中的图片
服务器·python·pdf
cd小白2 小时前
IO进程 day05
linux·服务器·c语言·网络·io进程
A星空1232 小时前
Linux mount命令
linux·运维·服务器
丁卯4043 小时前
Linux(centOS) 命令提示符格式修改(PS1)
linux·运维·服务器·centos
清平调A3 小时前
CentOS环境安装Docker
linux·docker·centos
菜萝卜子4 小时前
【Project】基于Prometheus监控docker平台
docker·容器·prometheus
lqlj22334 小时前
Linux常用命令
linux·运维·服务器
obboda5 小时前
使用haproxy实现MySQL服务器负载均衡
服务器·mysql·负载均衡
wanhengidc5 小时前
怎样分辨是否是高防服务器?
运维·服务器·网络