搭建 Minecraft 服务端环境(下):Docker 镜像

前言

上一篇 中我们已经做到了一条命令搭建MC服务端环境,那就是:

curl -sL http://shell.bluerain.io/minecraft | bash

这篇,我们基于这条命令构建一个MC的Docker镜像。体会一下Docker优雅的高复用和服务化管理MC服务端程序的强大和便捷。

DOCKER

其实这篇是写给接触过Docker的人准备的,所以这里我并不打算介绍Docker以及写Docker的基础示例教程。
有兴趣的朋友可以自行学习:https://yeasy.gitbooks.io/docker_practice/content/
简而言之,Docker更加方便了我们管理MC服务。

Dockerfile

上篇中我们的脚本没有配置Java环境,因为这里我们会基于一个 Java 的 Image, 自带了 Java 环境。
新建 Dockerfile:

# 基于java:8-jre
FROM java:8-jre
# 变量储存启动脚本绝对路径
ENV STARTUP_SH /data/minecraft/startup.sh
# 自动搭建MC服务端环境
RUN curl -sL http://shell.bluerain.io/minecraft | bash
# 声明端口映射
EXPOSE 25565:25565
# 执行启动脚本(此处在启动容器时执行)
CMD ${STARTUP_SH}

这样一个简单的Dockerfile即完成了MC服务端环境的封装。接着我们Build镜像:

docker build -t location/minecraft .

等待镜像构建完成后,启动容器:

docker run -ti -d -e TZ=Asia/Shanghai -p 25565:25565 --name mc1.10 -d location/minecraft

解释:-e TZ=Asia/Shanghai 是用来更改容器时区(这里是上海),否则输出日志不会是中国的时间。
OK , 这样一个MC服务端的镜像构建和容器启动就完成了。
如果想启动多个MC服务端,在run命令上修改两处以下即可:

  1. 改不同的映射端口
  2. 改不同的容器名

DockerHub

docker-hub上提供镜像的 Automated 服务,所以我推荐大家把 Dockerfile 上传到 Github 或者 Dropbox,然后让 docker-hub 来构建你的镜像。这样镜像在云端,就可以随处拉取了。

补充

这里需要说明一下,我的这篇和上篇文章都是很基础的内容。完善程度不高。主要是讲最必要的步骤。 有必要参考我的跟随这篇文章的最终上线仓库版本(完善程度高): DockerfileDockerHub .

完善

待完善点有很多,例如 :

  • startup.sh 脚本可以带参数,例如 JVM 参数:-Xmx1024m -Xms1024m .
  • Dockerfile 区分 Server 版本
  • 将容器数据目录映射到宿主机

等。

我自己的已经完善了上述问题,只是写出来就太多了很麻烦,所以只写了一个快捷入门。
如果不想参考怎样解决上述问题的,推荐直接使用我的 Docker Image. (切记看项目README或镜像描述)

最后

小小的宣传一下:

  • 我的 mc 服务端地址是: mc110.bluerain.io (1.10版本)
  • 还有一个1.7版本: mc17.bluerain.io:25567
  • 最重要的欢迎大家可以来我的MC群交流: 493545276

有什么不懂的也欢迎评论中提出。