欢迎光临散文网 会员登陆 & 注册

我的世界服务端制作Docker镜像

2023-06-18 16:49 作者:极极及  | 我要投稿
此为简略版教程: 详细完整内容在个人博客地址: http://home.nages.cc:8081/archives/1687077950644

此案例教学仅仅只教学我的世界docker服务端的制作, 不涉及启动脚本的教学.

docker镜像启动有很多的好处, 首先就是其沙盒环境, 可以不用担心病毒入侵服务器, 但是制作镜像的时候需要谨慎一些, 还可以不用担心环境冲突的问题, 一个服务一个独立的环境.

数据持久化, 可以在容器未启动的情况下直接查看容器内的文件, 以及修改文件等等, 如果你需要在开启服务器后添加汉化, 插件, 等等, 此教程很适合你

资源使用情况, 可以单独查看容器使用的资源, 使用容器的方式部署服务可以很方便的节约服务器资源, 达到一个服务器开多个服务的情况.

分享服务端方便, 如果你不想开了可以很方便的给下一个人接力, 或者服务器到期了, 很轻松就可以移植到第二台全新的服务器

作者: Nages

作者博客: http://home.nages.cc:8081 (你是故意的还是不小心的, 咋还有端口. 作者: haha)

作者爱发电地址: https://afdian.net/a/nages

演示文件下载

完整的演示文件下载地址: http://home.nages.cc:1002/d/797811f4ad084859ab1f/

需求环境

  • docker(制作docker镜像必备)

  • docker-compose(一键运行docker构建脚本, 管理镜像很方便)

注意事项

  • 继承镜像的时候需要知道自己的系统架构, 你使用的docker镜像不一定支持所有的系统架构

  • dockerfile的格式

  • docker-compose的格式

  • 注意服务端的游戏版本和jdk版本是否匹配

  • 下载的服务器最好要提供.sh后缀的启动脚本

  • 如果在windows制作docker镜像请确保你的电脑有安装docker-desktop(docker桌面版)

  • 因为linux 的权限比较严格, 所以有时候出问题可以先考虑下权限的问题

  • docker-compose 脚本启动不成功检查下docker-desktop是否启动, 还有docker, 和docker-compose

  • 有些整个包是通过当前工作路径来获取配置文件的, 需要修改docker-compose.yml中的工作目录到指定的容器中的目录才行

获取我的世界服务端

想要把我的世界服务端从只能在windows上运行, 改造成可以在任何有docker的机器上运行的docker容器, 你必须得先有一个我的世界服务端

我这里拿e6e的服务端做举例

e6e官方地址

点击图中红框的位置进行下载页面的跳转

等待5秒后自动开始下载

如果没开始下载点击此处尝试下载

现在我们获取到了服务端的安装程序

把他解压至桌面

因为我想在windows上制作完镜像后给linux使用

双击.bat后缀的服务端安装程序进行下载服务端文件

开始下载服务端文件

下载服务端文件的时候记得开vpn, 否则会下载失败





下载完毕, 同意eula协议

如果没有eula.txt文件就手动创建一个并输入eula=true内容

此时服务端文件已经下载完毕了, 关闭当前窗口

找到eula.txt文件并打开

把false改为true

eula=true

测试服务端是否正常

此步骤主要是保证服务器是否能正常运行, 只要确定服务器能正常运行即可

双击服务端启动文件

此时服务器开始启动




客户端测试连接

因为是本地测试, 所以此处的ip地址为localhost, 如果是云端服务器可以使用公网ip, 或者映射ip


可以观察到客户端能正确的观测到服务器

客户端进入游戏测试




成功进入游戏

客户端查看任务数据

任务数据是以服务器为基准的, 所以能看见任务数据没什么问题一般就没问题了

到了这一步已经测试服务端已经没毛病了, 可以关闭服务端了, 关闭快捷键ctrl+c

制作docker镜像

新建一个文件夹, 我姑且取名为mc_server_demo, 名字最好是英文加下划线, 在这个文件夹下在新建一个dockerfile文件夹, 用来存放dockerfile脚本

因为e6e的启动环境需要jdk1.8, 所以继承的镜像需要进行调整

查询镜像版本

https://hub.docker.com/

我们需要8的版本

脚本内容

编写脚本文件

FROM openjdk:8 VOLUME ["/data"] EXPOSE 25565

解释下脚本的内容

  • FROM 继承的基础镜像

  • VOLUME 开放的容器内的目录, 容器可以理解为虚拟机

  • EXPOSE 容器对外开放的端口

制作docker-compose脚本

mc_server_demo文件夹下创建文件docker-compose.yml文件

编写内容

version: '2' services:  mc_server:    build: dockerfile    image: mc_server    ports:      - 25565:25565    volumes:      - ./data:/data    container_name: mc_server    restart: always    working_dir: /data    command:     - /data/start-server.sh

我们需要注意的只有mc_server, port, container_name, command,working_dir

  • mc_server 第一个mc_server只的是容器的名字, 当然后面的那个container_name也是, container_name的优先级更高, 如果不写container_name就是使用第一个mc_server位置上的名字

  • ports 容器对外开放的端口, 可以开放多个, 左边代表对外开放的端口, 右边代表容器内连接的端口

  • command 启动容器时传递的命令

  • working_dir 容器内的工作目录, 有些整合包找不到文件或配置的时候需要配置, 一般不需要改

拷贝服务端文件

写完脚本后, 在mc_server_demo 文件夹下新建一个data文件夹,这个data文件夹存放这服务端文件, 将我们测试好可以正常运行的服务端文件全选拷贝到此文件夹下

修改脚本

找到linux的启动脚本, 此服务端的启动脚本为start_server.sh

要把mc_server_demo文件夹下的docker-compose.yml文件修改其中的command配置项

version: '2' services:  mc_server_e6e:    build: dockerfile    image: mc_server    ports:      - 25565:25565    volumes:      - ./data:/data    container_name: mc_server_e6e    restart: always    command:     - /data/start-server.sh

启动服务端

mc_server_demo文件夹下输入cmd进入控制台, 输入docker-compose up -d启动容器




成功运行, 到这里就制作完成了.

可以直接把整个mc_server_demo文件压缩后发送到服务器执行docker-compose up -d直接运行了

观察下服务器的资源消耗

成功进入容器内开启的我的世界服务器


md每次一进服务器就有史莱姆找我麻烦

进入成功, 大功告成!!

打包服务器

在docker-compose.yml的文件下开启命令行输入docker-compose down -d关闭容器

直接压缩整个mc_server_demo, 压缩成zip格式方便解压, 毕竟比较通用


上传服务器, 这个看你们自己怎么上传了, 然后解压运行

docker-compose up -d



移植linux成功




我的世界服务端制作Docker镜像的评论 (共 条)

分享到微博请遵守国家法律