使用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命令即可。

相关推荐
小宋1021几秒前
玩转RabbitMQ声明队列交换机、消息转换器
服务器·分布式·rabbitmq
m0_609000423 分钟前
向日葵好用吗?4款稳定的远程控制软件推荐。
运维·服务器·网络·人工智能·远程工作
kejijianwen2 小时前
JdbcTemplate常用方法一览AG网页参数绑定与数据寻址实操
服务器·数据库·oracle
m0_741768854 小时前
使用docker的小例子
运维·docker·容器
Karoku0665 小时前
【网站架构部署与优化】web服务与http协议
linux·运维·服务器·数据库·http·架构
geek_Chen016 小时前
虚拟机共享文件夹开启后mnt/hgfs/下无sharefiles? --已解决
linux·运维·服务器
(⊙o⊙)~哦6 小时前
linux 解压缩
linux·运维·服务器
最新小梦7 小时前
Docker日志管理
运维·docker·容器
友友马9 小时前
『 Linux 』HTTP(一)
linux·运维·服务器·网络·c++·tcp/ip·http
重生之我在20年代敲代码9 小时前
HTML讲解(一)body部分
服务器·前端·html