在Ubuntu中搭建你的MC服务器——基于Docker

MC超好玩的,谁会拒绝有趣的红石捏?

本文主要记录一种在Ubuntu服务器中便捷地搭建MC服务器的方法。

搭建环境

  • Ubuntu 21.10 (GNU/Linux 5.13.0-39-generic x86_64)
  • Docker version 20.10.14, build a224086
  • Docker Image: itzg/minecraft-server:latest

前置:Docker 安装

详细内容可参考Docker官方文档,如果不害怕英文的话。

注意,以下的方案均需要服务器sudo权限,

懒人方案——使用脚本

Docker provides a convenience script at get.docker.com to install Docker into development environments quickly and non-interactively. The convenience script is not recommended for production environments, but can be used as an example to create a provisioning script that is tailored to your needs.

在命令行中输入以下命令:

1
2
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

然后等一会就好了。

手动方案——从官方仓库下载

配置仓库

  1. 下载前置包并添加Docker官方GPG公钥
1
2
3
4
5
6
7
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  1. 添加Docker稳定版仓库
1
2
3
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

下载Docker

1
2
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

验证安装是否成功:

1
sudo docker run hello-world

如果成功则可以看到如下截图:

图 1

在Docker中部署Minecraft Server

这里使用一个由itzg以及其余百位大佬共同维护的一个Docker镜像:minecraft-serverGithub地址

在命令行中输入以下指令(注意修改部分参数以符合你的需求):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
docker run \
-d -it \ # 后台运行容器,以交互模式运行容器并为容器重新分配一个伪终端
-p 25565:25565 \ # 宿主机端口:容器端口
--name=mcserver \ # 容器名称,便于后续管理
--env=EXEC_DIRECTLY=true \ # 允许docker attach显示彩色输出
--env=EULA=TRUE \ # 接受EULA协议
--env=VERSION=1.18.2 \ # 指定游戏版本为1.18.2,默认使用最新版
--env=TZ=Asia/Shanghai \ # mc服务器日志时区
--env=TYPE=PAPER \ # 服务器核心类型
--env=MEMORY=4G \ # 指定内存限制
--env=LOG_TIMESTAMP=true \ # 在日志中记录时间戳
--volume=/foo/bar:/data \ # 宿主机存储目录:容器内部目录。修改为你的目录!
--restart=always \ # 容器停止便立即重启
itzg/minecraft-server

执行后耐心等待镜像下载以及游戏核心下载即可,如果下载出现问题可以删除容器后重新运行。

MC服务器管理

  • 查看容器状态
1
docker ps
  • 交互式控制
1
docker exec -i mcserver rcon-cli
  • 只执行单条指令(例如stop):
1
docker exec mcserver rcon-cli stop
  • 附加到服务器命令行:
1
docker attach mcserver

退出方法:依次按下Ctrl-pCtrl-q以安全地退出服务器命令行。

  • 查看服务器日志:
1
docker logs mcserver