200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > linux docker搭建 minecraft 我的世界游戏服务器

linux docker搭建 minecraft 我的世界游戏服务器

时间:2019-04-22 16:48:50

相关推荐

linux docker搭建 minecraft 我的世界游戏服务器

minecraft

本篇文章介绍使用docker容器方式在linux操作系统上搭建最新版本minecraft服务器,并使用bungeecord配置为群组服务器模式。

常规方式搭建minecraft服务器参考这篇文章:

/whatday/article/details/108414774

搭建环境介绍

操作系统版本:CentOS7 minimal最小安装版

下载地址:/download/

本次搭建在阿里云购买一台4G内存的centos服务器进行测试。

访问minecraft服务端时,默认连接25565端口(可自定义),注意配置阿里云服务器安全规则,放通25565端口。

关闭linux防火墙

systemctl stop firewalld && systemctl disable firewalldsed -i ‘s/^SELINUX=enforcing$/SELINUX=disabled/’ /etc/selinux/configsetenforce 0

本次搭建服务端整体结构:

BC代理端和所有子服全部运行在一台服务器上,逻辑结构如下图:

安装docker

#下载安装脚本并执行curl -fsSL -o get-docker.sh sh get-docker.sh --mirror Aliyun#配置镜像加速mkdir -p /etc/dockertee /etc/docker/daemon.json <<-'EOF'{"registry-mirrors": ["https://registry.docker-"]}EOF#启动docker服务systemctl enable --now docker

安装docker-compose工具

docker-compose负责实现对 Docker 容器集群的快速编排,它允许用户通过一个单独的 docker-compose.yml 模板文件来定义一组相关联的应用容器为一个项目.

#安装epel源# yum install -y epel-release #安装docker-compose# yum install -y docker-compose

安装MC服务端

这里仅做测试,基于容器方式运行以下三个容器:

mcworld1mcworld2mcbungeecord

说明:

mcworld1和mcworld2是minecraft的两个服务端,也即两个子服,mcbungeecord为服务端代理软件。使用的容器镜像为dockerhub镜像:

/r/itzg/minecraft-server/

/r/itzg/bungeecord/安装的服务端版本为PaperSpigot 1.13.2。

1.运行mcworld1服务端容器:

docker run -d -e EULA=TRUE \-v /mcworld1_data:/data \-e TYPE=PAPER \-e VERSION=1.13.2 \-e OPS=willminec \-e ONLINE_MODE=FALSE \-p 25566:25565 \--restart always \--name mcworld1 \itzg/minecraft-server --noconsole

2.运行mcworld2服务端容器:

docker run -d -e EULA=TRUE \-v /mcworld2_data:/data \-e TYPE=PAPER \-e VERSION=1.13.2 \-e OPS=willminec \-e ONLINE_MODE=FALSE \-p 25567:25565 \--restart always \--name mcworld2 \itzg/minecraft-server --noconsole

3.运行mcbungeecord容器:

docker run -d -v /mcbg_data:/server \-p 25565:25577 \--name mcbungeecord \--restart always \itzg/bungeecord

4.使用docker-compose运行容器(可选)

我们也可以使用docker-compose来一次运行多个容器,这里已经提前安装了docker-compose,下面我们将运行3个容器的命令写入yml文件并使用docker-compose执行。

在/root目录下创建docker-compose.yml文件,配置如下内容:

[root@willcentos ~]# vim docker-compose.ymlversion: '2'services:mcworld1:image: itzg/minecraft-serverports:- 25566:25565volumes:- /mcworld1_data:/dataenvironment:- EULA=true- TYPE=PAPER- VERSION=1.13.2- OPS=willminec- ONLINE_MODE=FALSEcontainer_name: mcworld1tty: truestdin_open: truerestart: alwaysmcworld2:image: itzg/minecraft-serverports:- 25567:25565volumes:- /mcworld2_data:/dataenvironment:- EULA=true- TYPE=PAPER- VERSION=1.13.2- OPS=willminec- ONLINE_MODE=FALSEcontainer_name: mcworld2tty: truestdin_open: truerestart: alwaysmcbg:image: itzg/bungeecord ports:- 25565:25577volumes:- /mcbg_data:/serverlinks:- mcworld1- mcworld2container_name: mcbungeecordrestart: always

执行docker-compose文件,运行容器:

[root@willcentos ~]# docker-compose up -d

执行效果与前三步运行3个容器一样。

5.查看下载的容器镜像:

[root@willcentos ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEitzg/minecraft-server latest c6a0d0b8e7e5 4 weeks ago 309MBitzg/bungeecord latest e9aff248403a 6 months ago 86.5MB

6.查看容器运行状态:

STATUS列全部为UP(healthy)说明容器已经正常运行

[root@willcentos ~]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESb73c30462d8d itzg/bungeecord "/usr/bin/run-bungee…" 7 minutes ago Up 7 minutes 0.0.0.0:25565->25577/tcp mcbungeecordbea699ee3242 itzg/minecraft-server "/start" 7 minutes ago Up 7 minutes (healthy) 25575/tcp, 0.0.0.0:25567->25565/tcp mcworld27c3cd9e03326 itzg/minecraft-server "/start" 7 minutes ago Up 7 minutes (healthy) 0.0.0.0:25566->25565/tcp, 25575/tcp mcworld1

7.查看三个容器配置文件和数据在主机上的存放目录:

服务端的配置文件全部存放在主机本地根目录下,删除容器数据不会被删除。

[root@willcentos ~]# ll /total 16...drwxr-xr-x 4 1000 1000 158 Nov 25 12:10 mcbg_datadrwxrwxr-x 6 1000 1000 125 Nov 25 11:57 mcworld1_datadrwxrwxr-x 6 1000 1000 125 Nov 25 12:01 mcworld2_data...

第四章 修改配置文件

修改bungeecord配置文件

1.查看bungeecord目录下有哪些配置文件:

[root@willcentos ~]# ll /mcbg_data/total 10084-rw-r--r-- 1 1000 1000 10297582 Nov 25 15:57 BungeeCord.jar-rw-r--r-- 1 1000 1000989 Nov 25 15:57 config.yml-rw-r--r-- 1 1000 1000 3 Nov 25 15:57 locations.ymldrwxr-xr-x 2 1000 10004096 Nov 25 15:57 modules-rw-r--r-- 1 1000 1000155 Nov 25 15:57 modules.ymldrwxr-xr-x 2 1000 10004096 Nov 25 15:57 plugins-rw-r--r-- 1 1000 10003911 Nov 25 15:59 proxy.log.0-rw-r--r-- 1 1000 1000 0 Nov 25 15:57 proxy.log.0.lck

2.首先获取云服务器网卡IP地址,我这里是172.31.112.2

[root@willcentos ~]# ip a......2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:16:3e:0a:26:84 brd ff:ff:ff:ff:ff:ffinet 172.31.112.2/20 brd 172.31.127.255 scope global dynamic eth0valid_lft 315270699sec preferred_lft 315270699sec

3.需要修改的配置文件为config.yml,,修改如下内容:

[root@localhost ~]# vim /mcbg_data/config.yml online_mode: true #默认ture......ip_forward: true #默认为false,改为true......#复制lobby内容,增加一个子服务器create,注意修改IP和端口servers: lobby:motd: 'Welcome the lobby world!'address: 172.31.112.2:25566restricted: falsecreate:motd: 'Welcome the create world!'address: 172.31.112.2:25567restricted: false......

修改mcworld服务端配置文件

需要修改mcworld1和mcworld2配置文件,这里以mcworld1为例:

1.查看mcworld1服务端目录下有哪些配置文件

[root@willcentos ~]# ll /mcworld1_data/total 42508-rw-rw-r-- 1 1000 1000 2 Nov 25 15:57 banned-ips.json-rw-rw-r-- 1 1000 1000 2 Nov 25 15:57 banned-players.json-rw-rw-r-- 1 1000 10001053 Nov 25 15:57 bukkit.ymldrwxrwxr-x 2 1000 10004096 Nov 25 15:57 cache-rw-rw-r-- 1 1000 1000598 Nov 25 15:57 commands.ymldrwxrwxr-x 2 1000 10004096 Nov 25 15:57 config-rw-rw-r-- 1 1000 1000 65 Nov 25 15:57 eula.txt-rw-rw-r-- 1 1000 10002576 Nov 25 15:57 help.ymldrwxrwxr-x 2 1000 10004096 Nov 25 15:57 logsdrwxrwxr-x 2 1000 10004096 Nov 25 15:57 mods-rw-rw-r-- 1 1000 1000137 Nov 25 15:57 ops.json-rw-rw-r-- 1 1000 1000 11 Nov 25 15:57 ops.txt.converted-rw-rw-r-- 1 1000 1000 43431489 Nov 25 15:57 paper_server.jar-rw-rw-r-- 1 1000 10005473 Nov 25 15:58 paper.yml-rw-rw-r-- 1 1000 1000 0 Nov 25 15:57 permissions.ymldrwxrwxr-x 3 1000 10004096 Nov 25 15:57 plugins-rw-r--r-- 1 1000 1000912 Nov 25 15:58 server.properties-rw-rw-r-- 1 1000 10003358 Nov 25 15:58 spigot.yml-rw-rw-r-- 1 1000 1000108 Nov 25 15:57 usercache.json-rw-rw-r-- 1 1000 1000 47 Nov 25 15:57 version_history.json-rw-rw-r-- 1 1000 1000 2 Nov 25 15:57 whitelist.jsondrwxrwxr-x 8 1000 10004096 Nov 25 16:13 worlddrwxrwxr-x 4 1000 10004096 Nov 25 16:13 world_netherdrwxrwxr-x 4 1000 10004096 Nov 25 16:13 world_the_end[root@willcentos ~]#

2.需要修改的配置文件为server.properties和spigot.yml:

[root@willcentos ~]# vim /mcworld1_data/server.properties ......online-mode=false #此项如果为true需要改为false

修改spigot.yml配置文件:

[root@willcentos ~]# vim /mcworld1_data/spigot.yml ......config-version: 11settings:......bungeecord: true #将false改为true......

3.mcworld2配置需要做同样修改,这里省略

4.修改配置文件后需要重启3个docker容器,使配置生效

[root@willcentos ~]# docker restart mcbungeecord mcworld1 mcworld2

基本原理:

登录MC服务端

1.下载安装官方客户端:

官方客户端下载地址:/zh-hans/download/

下载与服务端版本相同的客户端版本(即最新的1.13.2):

官网注册账号,购买游戏,下载minecraft客户端并安装到个人电脑,启动客户端并登录,登录后界面如下:

2.配置服务端IP地址并连接

选择开始游戏,然后选择多人游戏

输入服务器名称,可以默认,输入服务端IP地址,即阿里云服务器的公网地址,点击完成:

点击加入服务器,即可登录游戏:

登录游戏后默认为生存模式,输入/server提示当前登录的服务端为lobby,即mcworld1服务端,并且提示可登录的服务器为lobby和create两个服务端。

输入/server create切换到create服务端,即mcworld2服务端:

再次输入/server可以看到当前所在服务端为create服务器端:

到这里群组服务器已经完成,可以正常游戏了。

3.服务端配置修改

目前两个服务端都是生存模式,我们可以通过修改配置文件,更改游戏模式,调整op权限等各种操作。

这里先配置OP权限,运行容器是已经添加willminec用户为op管理员,但在ops.json的配置文件中默认uuid不对,需要进行更改:

查看当前的ops.json配置信息:

[root@willcentos ~]# vim /mcworld1_data/ops.json [{"uuid": "9f8064f3-8797-312e-af07-ac091656b63d","name": "willminec","level": 4,"bypassesPlayerLimit": false}

查询willminec用户的uuid

访问查询网站:,输入用户名进行查询:

我们查询到该用户的uuid后进行替换:

[root@willcentos ~]# vim /mcworld1_data/ops.json [{"uuid": "44702a33-29dc-4b8f-a545-f8aa499517ef","name": "willminec","level": 4,"bypassesPlayerLimit": false}]

然后保存配置重启该容器:

[root@willcentos ~]# docker restart mcworld1

重新登录游戏,即可拥有op权限,可以进行大部分命令的操作:

例如使用/deop (玩家名)删除op时提示当前可删除的op为willminec.

可使用/op <玩家名> 为其他用户设置op权限。

使用/gamemode xxx切换游戏模式:

其他命令例如:

/tp 1000 64 1000 #传送到x坐标为1000,y坐标为64,z坐标为1000的位置/time set day #将时间切换到白天

服务端安装插件

对于插件安装,直接下载后放在服务端对应plugins目录下,然后重启容器即可,这里以mcworld1为例:

访问bukkit官网下载对应版本的插件:/bukkit-plugins

这里仅下载worldedit、worldguard、EssentialsX、PermissionsEx四个插件进行测试,下载后的插件全部为jar文件:

使用winspc或者FlashFXP从windows系统传送到linux系统的/mcworld1_data/plugins目录下即可:

[root@willcentos ~]# ll /mcworld1_data/plugins/total 5872drwxrwxr-x 2 1000 1000 4096 Nov 26 20:08 bStats-rw-r--r-- 1 root root 1211165 Nov 26 18:07 EssentialsX-2.15.0.1.jar-rw-r--r-- 1 root root 14270 Nov 26 18:07 EssentialsXAntiBuild-2.15.0.1.jar-rw-r--r-- 1 root root 12792 Nov 26 18:07 EssentialsXChat-2.15.0.1.jar-rw-r--r-- 1 root root 1120585 Nov 26 18:07 EssentialsXGeoIP-2.15.0.1.jar-rw-r--r-- 1 root root 19387 Nov 26 18:07 EssentialsXProtect-2.15.0.1.jar-rw-r--r-- 1 root root 18251 Nov 26 18:07 EssentialsXSpawn-2.15.0.1.jar-rw-r--r-- 1 root root 334630 Nov 26 18:07 EssentialsXXMPP-2.15.0.1.jar-rw-r--r-- 1 root root 722895 Nov 26 18:40 PermissionsEx-1.23.4.jar-rw-r--r-- 1 root root 1449119 Nov 16 13:35 worldedit-bukkit-7.0.0-beta-01.jar-rw-r--r-- 1 root root 1088638 Nov 24 12:54 worldguard-bukkit-6.2.2.jar[root@willcentos ~]#

然后重启mcworld1容器,插件即可生效,登录游戏进行验证:

[root@willcentos ~]# docker restart mcworld

可以看到已经支持了world相关命令,我们用worldedit插件功能创建一个半径为5的空心玻璃圆形,执行命令://hcyl glass 5 1

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。