3分鐘用Docker搭建一個Minecraft服務器
1 寫在前面的話
作為一名資深游戲玩家,初次接觸Minecraft(我的世界)時我是拒絕的,但玩了一段時間之后便欲罷不能。Minecraft(以下簡稱MC)作為一款沙盒類游戲,具有極高的自由度,想玩什么完全取決于你。你可以進行傳統(tǒng)的荒野求生,打怪升級,可以建造各種風格的建筑,可以成為紅石達人,實現(xiàn)各種自動化等等。這是一款最典型的“別人的游戲”,有大神在游戲里造了一個32位的計算機你能信?別人的世界,哦不,是我的世界就先介紹到這里。
言歸正傳,前段時間用網(wǎng)易蜂巢的容器搭了一個Minecraft原版生存服,那性能杠杠的。玩起來那叫一個6。想到廣大小伙伴要么玩的單機,沒法跟好基友一起愉快地玩耍;要么玩著別人開的有各種限制的服,各種不爽。因此特地整理教程一篇,造福廣大 MCers。
2 如何搭建
眾所周知,MC是JAVA編寫的,無論是客戶端還是服務端都直接是個jar包,因此前提條件就是需要有個jre。本人的MC服完全是手動搭建起來的,先跟大家簡單講下手動搭建的步驟。
1、創(chuàng)建一個Linux容器,ubuntu、debian、centos看你喜歡什么,我用的是debian
2、安裝jre或jdk
3、安裝基本的工具,tmux、vim等
4、下載Minecraft的服務端文件
5、使用tmux將Minecraft服務端文件運行起來
6、進行基本的服務器配置
這里為什么要用tmux呢?因為我們開的是游戲服呀,我們要在不停服的前提下執(zhí)行一些操作,比如添加op,ban掉某個ip等等,之后要讓其繼續(xù)在后臺運行。tmux剛好滿足這個需求,當然其他的工具也可以,只不過本人習慣用tmux而已。
可以看到手動操作還是比較麻煩的,那有更簡單的方法嘛?答案是肯定的,網(wǎng)易蜂巢是基于Docker的容器云平臺,利用Docker的特性,我們可以通過Dockerfile制作MC服務器鏡像,然后使用該鏡像創(chuàng)建一個容器就可以了,閑話不多說,直接上Dockerfile。
Docker,Minecraft服務器
介紹下這個Dockerfile,因為蜂巢官方有jdk的鏡像,所以直接拿來用作基礎鏡像,然后裝一些基本的工具。第2部分是創(chuàng)建一個目錄用作工作目錄,并將服務器文件下載到該目錄下。第3部分是創(chuàng)建并設置MC服務器需要的文件,下面再具體講。第4部分表示容器啟動時的入口,使用tmux讓服務端運行在后臺,同時啟用ssh登錄。因為不確定大家創(chuàng)建容器時使用的規(guī)格,所以啟動服務器時,并沒有指定jvm的參數(shù)。
其中第2步,為了便于演示,我將服務器文件上傳到了oschina的git庫中。當然這里你可以替換成你自己想要下載的服務器文件地址,如果本地已經(jīng)有下載好的文件,可以直接上傳到容器中。
下面講一下MC服務器需要的文件,其實這些文件的名字就很明顯的告訴了你它們的作用。
第一個文件是eula.txt,字面意思,最終用戶許可協(xié)議,你必須同意協(xié)議(文件中設置eula=true)才能正常啟動服務器。當你沒有創(chuàng)建該文件,服務器在第一次運行時,會自動創(chuàng)建eula.txt,同時告訴你必須同意協(xié)議才能繼續(xù)啟動。
另外一個很重要的文件是server.properties,這個文件里存放服務器相關的各種參數(shù)配置。具體各個參數(shù)的意義,大家可以直接去wiki查看。這里只講一個跟登錄相關的參數(shù)online-mode=true,該參數(shù)表示是否開啟線上驗證,什么意思呢,當開始線上驗證,對每個登錄的賬號,服務器都會到Minecraft的賬號系統(tǒng)里驗證該賬號是否合法,如果不合法會被拒絕登錄。如果你希望在服務器啟動時就關閉線上驗證,可以在第3部分增加RUN echo online-mode=false > server.properties即可,但是當關閉線上驗證時,則任何登錄的賬號都不會驗證,直接登錄的,也就是說你只要知道別人的用戶名,就可以直接登錄別人的賬號,因此建議大家開啟線上驗證。
其他文件,如ip黑名單banned-ips.json、賬號黑名單banned-players.json、op列表ops.json等,這里就不詳細講了,有興趣的同學可以去wiki看下,文件結構都是很簡單的。
3 開啟MC之旅
使用Dockerfile構建自定義鏡像,并用構建好的鏡像創(chuàng)建容器,具體方法就不在這里展開了,大家可以參考蜂巢官方的幫助文檔https://c.163.com/wiki/index.php?title=創(chuàng)建自定義鏡像 以及 https://c.163.com/wiki/index.php?title=創(chuàng)建容器。
等容器創(chuàng)建完成后,打開Minecraft客戶端,輸入剛創(chuàng)建的容器外網(wǎng)ip,開啟你的Minecraft之旅吧。
友情提示:眾所周知,Minecraft是很吃內存的,因此還是建議大家使用內存1G以上的規(guī)格。
4 后記
本教程只是教大家用最簡單的方式創(chuàng)建一個MC服務器,當然利用腳本可以讓創(chuàng)建以及啟動過程更優(yōu)雅,定制性更強。例 如,利用Dockerfile的環(huán)境變量ENV配合腳本,可以生成一個完全定制化的server.properties。關于MC服務器如何配置的知識,后面有機會再跟大家分享。希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關文章
Docker為網(wǎng)絡bridge模式指定容器ip的方法
Docker在創(chuàng)建容器時有四種網(wǎng)絡模式,bridge為默認不需要用--net去指定,其他三種模式需要在創(chuàng)建容器時使用--net去指定。那Docker為網(wǎng)絡bridge模式指定容器ip該如何實現(xiàn)呢?下面通過通過這篇文章一起看看吧,文中給出了詳細的示例代碼,有需要的可以參考借鑒。2016-11-11詳解Docker 下開發(fā) hyperf 完整使用示例
這篇文章主要介紹了詳解Docker 下開發(fā) hyperf 完整使用示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-01-01Docker容器生命周期 | kill和 stop的區(qū)別與聯(lián)系 | d
這篇文章主要介紹了Docker容器生命周期 | kill和 stop的區(qū)別與聯(lián)系 | docker pause/ unpause,本講內容是從?Docker入門到進階里面抽離出來的內容,從而使原文更加有序、重點突出,需要的朋友可以參考下2023-08-08詳解Docker 配置國內免費registry mirror
本篇文章主要介紹了 Docker 配置國內免費registry mirror,具有一定的參考價值,有興趣的小伙伴們可以參考一下2017-07-07詳解如何利用docker快速構建MySQL主從復制環(huán)境
這篇文章主要介紹了詳解如何利用docker快速構建MySQL主從復制環(huán)境,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05Docker鏡像推送(push)到Docker Hub的實現(xiàn)
這篇文章主要介紹了Docker鏡像推送(push)到Docker Hub的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-09-09