Docker实战:10分钟搭建带Mod的MC服务器

22 次阅读 0 点赞 0 评论 9 分钟原创技术教程

想和朋友联机玩Minecraft却不会开服?本教程带你用Docker Compose在10分钟内从零搭建服务器,支持自动升级、Mod一键加载与版本切换。无需手动配置Java、下载服务端或处理依赖,掌握容器化部署与性能调优技巧,今晚就能开服畅玩。

#Docker #容器化 #Minecraft #运维教程 #Mod管理
Docker实战:10分钟搭建带Mod的MC服务器

10 分钟用 Docker 搭建 Minecraft 服务器:从开服到 Mod 管理全记录

想和朋友一起开麦下副本、搞建筑,却苦于不会搭建 Minecraft 服务器?

我以前也干过这事:手动装 JDK、去 Mojang 官网下服务端 jar、配 eula.txt、折腾内网穿透、调 JVM 参数、手动丢 Mod 进 mods 文件夹……一顿操作下来半天过去了,服务器还没跑起来。后来用上容器化,我才发现原来开服可以像启动一个 Web 服务一样简单。

今天带你用 GitHub 上 14k+ 星的 itzg/docker-minecraft-server 镜像,10 分钟搭一台随时可升降配、自带自动升级、支持一键加载 Mod 的 MC 服务器。学完这篇,你不仅能和朋友快乐联机,还能顺手掌握 Docker Compose 编排、容器数据卷持久化、环境变量配置等实战技能。


前置条件

  • 一台 Linux 服务器(Ubuntu 20.04+ / CentOS 8+ 均可,本地 VM 也行)
  • 已安装 Docker 和 Docker Compose V2
  • 了解基本的 Docker 概念(镜像、容器、端口映射、数据卷)
  • 有 Java 版 Minecraft 客户端(和服务器版本一致即可)

如果你的机器还没装 Docker,官方一键脚本最省心:

bash 复制代码
curl -fsSL https://get.docker.com | sh
sudo systemctl enable docker && sudo systemctl start docker

快速上手:三步开服

第一步:编写 docker-compose.yml

不要直接用 docker run,用 Compose 声明式管理会省去后续大量麻烦。在项目目录下创建 docker-compose.yml

yaml 复制代码
version: '3.8'

services:
  mc:
    image: itzg/minecraft-server:latest
    container_name: minecraft-server
    ports:
      - "25565:25565"
    environment:
      EULA: "TRUE"
      TYPE: PAPER
      VERSION: "1.20.4"
      MEMORY: 2G
    volumes:
      - ./data:/data
    restart: unless-stopped

为什么这么写?

  • EULA: "TRUE":Mojang 要求你同意最终用户许可协议,否则服务端会直接退出。这是必须项。
  • TYPE: PAPER:原版服务端性能一般,Paper 是优化版,兼容插件且 TPS 更稳,开服首选。
  • VERSION:指定 Minecraft 版本,镜像启动时会自动下载对应版本的服务端。
  • MEMORY: 2G:JVM 堆内存上限。2G 够 5-10 人小服,人多或装 Mod 再加。
  • volumes/data 是镜像内部的世界存档、配置、插件目录。映射到宿主机后,删容器不会丢档。
  • restart: unless-stopped:服务器重启或容器意外退出时自动拉起,不用你半夜爬起来重启。

第二步:启动服务

bash 复制代码
docker compose up -d

首次运行镜像会下载服务端 jar、生成初始配置,控制台会输出类似:

复制代码
[init] Resolved version 1.20.4 to 1.20.4
[init] Downloading PaperMC server jar...
[init] Running server: java -Xms2G -Xmx2G -jar paper-1.20.4.jar
[Server thread/INFO] Starting minecraft server version 1.20.4

看到 DoneServer started 就代表开服成功了。

第三步:加入游戏

打开 Minecraft 客户端,选择与你服务端一致的版本,进入「多人游戏」→「添加服务器」:

复制代码
服务器地址: 你的服务器IP:25565

点「完成」就能连进去了。如果连不上,检查防火墙是否放行了 25565 端口。


实战示例:部署带 Mod 的整合包服务器

上面是基础开服,但很多玩家喜欢带 Mod 的玩法。手动下 Mod、处理依赖冲突很痛苦,这个镜像自带 Mod 管理机制。

场景:用 Forge 跑一个轻量科技 Mod 包

修改 docker-compose.ymlenvironment 部分:

yaml 复制代码
    environment:
      EULA: "TRUE"
      TYPE: FORGE
      VERSION: "1.20.1"
      MEMORY: 4G
      MODS: |
        https://cdn.example.com/mods/jei-1.20.1.jar
        https://cdn.example.com/mods/mekanism-1.20.1.jar
      REMOVE_OLD_MODS: "TRUE"

关键配置解读:

  • TYPE: FORGE:自动下载并安装 Forge Mod 加载器。
  • MODS:填 Mod jar 的下载链接,镜像启动时会自动拉取并放入 mods 目录。支持换行填多个。
  • REMOVE_OLD_MODS: "TRUE":每次启动清理旧 Mod,避免版本冲突堆积垃圾文件。

启动命令不变:

bash 复制代码
docker compose up -d

镜像日志会显示:

复制代码
[init] Downloading mod: jei-1.20.1.jar
[init] Downloading mod: mekanism-1.20.1.jar
[init] Starting Forge server...

如果后续要更新 Mod,只需改 MODS 链接或版本号,然后 docker compose up -d 重新拉起即可。不需要 SSH 进服务器手动替换文件。

进阶:一键加载 CurseForge / Modrinth 整合包

该项目还支持直接从 CurseForge 或 Modrinth 拉取完整整合包,只需添加环境变量:

yaml 复制代码
      CF_SLUG: "my-modpack"
      CF_FILE_ID: "1234567"
      # 或 Modrinth:
      MODRINTH_PROJECT: "my-project"
      MODRINTH_VERSION: "1.2.3"

镜像会自动解压、安装依赖、配置 Mod 和 config,真正实现「配置即开服」。


踩坑提醒 & 常见问题

1. 内存不够,服务器频繁崩溃

症状:日志报 java.lang.OutOfMemoryError: GC overhead limit exceeded 或 TPS 掉到个位数。

解法:调大 MEMORY,同时开启 Aikar 的 JVM 优化参数:

yaml 复制代码
      MEMORY: 6G
      USE_AIKAR_FLAGS: "TRUE"

Aikar Flags 是 MC 社区广泛验证过的 GC 优化方案,能显著减少卡顿。

2. 容器重启后世界丢了

原因:没有正确映射数据卷,或映射路径写错。

解法:确保 volumes 配置正确,并且不要随意删除宿主机上的 data 目录。每次启动前检查:

bash 复制代码
ls -la ./data/world/

level.dat 文件说明世界数据还在。

3. 版本切换后插件不兼容

原因:你从 1.20.1 切到 1.20.4 时,旧版插件的 API 可能已变更。

解法:换版本时,建议清空 data/plugins 目录(先备份),重新下载对应版本的插件。或者设置:

yaml 复制代码
      FORCE_REDOWNLOAD: "FALSE"

避免每次启动都覆盖已有文件。


总结

回顾一下今天的步骤:

  1. 写 Compose 文件 → 声明镜像、端口、环境变量、数据卷
  2. 一键启动 → 自动下载服务端、初始化世界、开服
  3. 按需加载 Mod → 用 MODS 变量或整合包配置,免去手动部署
  4. 性能调优 → Aikar Flags + 合理内存配置,稳如老狗

这个镜像把开服过程中最繁琐的部分——下载服务端、处理依赖、版本管理、Mod 装载——全部封装成了环境变量。你不再需要写脚本、查文档、手动排错,改配置、重启容器就是全部操作。

下一步建议:

  • 尝试用 Nginx 反代 Web 管理面板(如 rcon-cli + Web UI)
  • 研究 BACKUPRESTORE 环境变量实现自动备份
  • 在多节点上用 Docker Swarm 或 K8s 编排高可用 MC 集群

开服不难,难的是开始。现在就去拉一个 Compose 文件,今晚就能和朋友一起探索你的世界了。有问题欢迎在评论区交流,我会挑典型问题专门写篇进阶指南。

最后更新:2026-09-14T10:02:39

评论 (0)

发表评论

blog.comments.form.loading
0/500
加载评论中...