使用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,直接拉取镜像即可:

docker pull centos:latest

等待镜像拉取完毕之后,运行该镜像即可:

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,然后直接解压缩配置环境变量,简单粗暴有成效。

# 我想将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配置文件。

vi /etc/profile

在文件的末尾加上Java环境变量的配置。

export JAVA_HOME=「刚才准备Java环境,输入pwd后复制的内容」
export PATH=$JAVA_HOME/bin:$PATH

退出编辑器,然后让profile文件生效。

source /etc/profile

这时候,在命令行中输入java --version,如果能返回出Java的环境信息,说明这个Java环境是OK了的。这一步就算完成了。

安装screen

安装screen的目的是能让minecraft的进程更好地在后台运行,避免出现关闭命令行后服务器也跟着关闭的情况。

yum install screen

运行minecraft服务

首先通过screen创建一个后台窗口,然后在该窗口内运行minecraft服务即可。这里默认已经下载好官网的minecraft.java文件了,并且将该文件放在了/minecraft文件夹下。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/25963.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

后端面试题分享查看测试代码

问题描述 编写一个函数,该函数接受一个字符串作为参数,检查该字符串是否符合密码强度要求, 返回True或False。 要求 密码强度要求如下: 不能小于6个字符必须出现大写、小写、数字、特殊字符(!#$%^&*_-&#xf…

(免费领源码)基于 node.js#vue#mysql的网上游戏商城35112-计算机毕业设计项目选题推荐

摘 要 本论文主要论述了如何使用node.js语言开发一个基于vue的网上游戏商城,本系统将严格按照软件开发流程进行各个阶段的工作,本系统采用的数据库是Mysql,使用node.js的koa技术技术构建的一个管理系统,实现了本系统的全部功能。在…

Java--Math类和Random类

1.Math类简介 1.Math类中提供了大量用于数学运算的相关方法。 2.Math类是使用final修饰的终结类,不能产生子类 3.Math类中的方法都是static修饰的静态方法,可以通过类名.方法名直接调用 2.Math常用方法 1.abs(int):求绝对值(int,long,floa…

ABB机器人修改IO信号的具体方法介绍

ABB机器人修改IO信号的具体方法介绍 具体步骤可从参考以下内容: 导出IO配置文件 打开【控制面板】-【配置】-【I/O System】-【文件】-【‘EIO’另存为】,就可以保存IO配置文件【EIO.cfg】用RobotStudio软件打开EIO.cfg文件在软件界面,鼠标右击,选择【I/O信号数据编辑器】选…

【MyBatis-plus】saveBatch 性能调优和【MyBatis】的数据批量入库

总结最优的两种方法: 方法1: 使用了【MyBatis-plus】saveBatch 但是数据入库效率依旧很慢,那可能是是因为JDBC没有配置,saveBatch 批量写入并没有生效哦!!! 详细配置如下:批量数据入…

数据结构---外部排序

个人介绍 hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 🦁作者简介:一名喜欢分享和记录学习的…

【计算机毕业设计】266基于微信小程序的在线点餐

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

【Nature子刊】最争气国人友好“灌水刊”,中科院3区升2区,录用仅1个月,2天见刊!

本周投稿推荐 SSCI • 中科院2区,6.0-7.0(录用友好) EI • 各领域沾边均可(2天录用) CNKI • 7天录用-检索(急录友好) SCI&EI • 4区生物医学类,0.5-1.0(录用…

最长有效括号 - LeetCode 热题 90

大家好!我是曾续缘🤪 今天是《LeetCode 热题 100》系列 发车第 90 天 动态规划第 10 题 ❤️点赞 👍 收藏 ⭐再看,养成习惯 最长有效括号 给你一个只包含 ( 和 ) 的字符串,找出最长有效(格式正确且连续&…

【单片机毕业设计9-基于stm32c8t6的酒窖监测系统】

【单片机毕业设计9-基于stm32c8t6的酒窖监测系统】 前言一、功能介绍二、硬件部分三、软件部分总结 前言 🔥这里是小殷学长,单片机毕业设计篇9基于stm32的酒窖监测系统 🧿创作不易,拒绝白嫖可私 一、功能介绍 -------------------…

Redis命令实践

Redis命令实践 Redis是一个开源的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中介。由于其高性能、丰富的数据结构和简单的命令集,Redis成为了许多现代应用程序的首选。以下是对Redis命令的详细实践介绍。 一、连接Redis服务器…

独而不孤,心动邂逅“情缘密语”虚拟数字人伴侣,让生活每一刻闪耀浪漫——全网首发全息智能伴侣数字人管家

【独而不孤,心动邂逅——“情缘密语”虚拟数字人伴侣,让生活每一刻闪耀浪漫】 在这个快节奏又偶尔孤单的世界里,每个人都值得被温柔以待,每颗心都渴望着理解与共鸣。为此,我们匠心推出了”情缘密语”您的理想虚拟全息数…

美国冷吨 日本冷吨英国冷吨的区别

冷吨的定义不是24小时内将0摄氏度的水冷冻成0摄氏度的冰所需要的冷量么?那么为什么会有三个单位的区别呢?是气候导致物性的变化么?还是别的什么原因?为什么美国冷吨和日本冷吨及英国冷吨不同呢? 基本单位不一样&#…

Python版与Java版城市天气信息爬取对比分析

在对比Python版和Java版城市天气信息爬取时,我们需要考虑多个方面,包括语言特性、库支持、代码简洁性、执行效率以及维护成本等。以下是对这两个版本进行的一些对比分析: 1. 语言特性 Python: 易于学习:Python的语法清…

使用HSSFWorkbook导出excel

导入依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version> </dependency>工具类 public class ExcelUtil {/*** 导出Excel* param sheetName sheet名称* param title 标…

基本药物采购使用

--医院采购基本药物金额数 select sum(采购基本药物金额数) 采购基本药物金额数 from ( select sum(t.实收金额) 采购基本药物金额数 from 住院费用记录 t,药品规格 a where t.收费细目ida.药品id and t.记录状态1 and a.基本药物基药 and t.收费细目id not in( …

装箱与拆箱, 包装类的缓存机制

前言 逆水行舟&#xff0c;不进则退&#xff01;&#xff01;&#xff01; 装箱与拆箱 自动装箱: 是指将基本类型自动转换为对应的包装类对象的过程. 例如: Integer y 5; // 编译器自动将 int 5 转换为 Integer 对象自动拆箱: 是指将包装类对象自动转换为对应的…

responses-validator接口断言之状态码

概述 responses-validator 专用于对 reqeuests 的响应对象进行断言&#xff0c; 同时&#xff0c;为了更适用 yaml 的场景&#xff0c;支持了多种灵活、可扩展的写法&#xff0c;可用于搭建yaml接口自动化测试框架。 根据 reqeuests 响应对象的特点&#xff0c;responses-val…

多线程爬取百度图片

爬取网页图片 import urllib.parse import requests import os import time from concurrent.futures import ThreadPoolExecutorheaders {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0…

JVM知识点

JVM是什么 JVM&#xff08;Java Virtual Machine&#xff09;是 Java 虚拟机&#xff0c;用于运行 Java 编译后的二进制字节码&#xff0c;最后生成机器指令。JVM 是 Java 能够跨平台的核心 JDK&#xff0c;JRE&#xff0c;JVM三者关系 三者的关系是&#xff1a;一层层的嵌套关…