我的世界服務端制作Docker鏡像
此案例教學僅僅只教學我的世界docker服務端的制作, 不涉及啟動腳本的教學.
docker鏡像啟動有很多的好處, 首先就是其沙盒環(huán)境, 可以不用擔心病毒入侵服務器, 但是制作鏡像的時候需要謹慎一些, 還可以不用擔心環(huán)境沖突的問題, 一個服務一個獨立的環(huán)境.
數(shù)據(jù)持久化, 可以在容器未啟動的情況下直接查看容器內(nèi)的文件, 以及修改文件等等, 如果你需要在開啟服務器后添加漢化, 插件, 等等, 此教程很適合你
資源使用情況, 可以單獨查看容器使用的資源, 使用容器的方式部署服務可以很方便的節(jié)約服務器資源, 達到一個服務器開多個服務的情況.
分享服務端方便, 如果你不想開了可以很方便的給下一個人接力, 或者服務器到期了, 很輕松就可以移植到第二臺全新的服務器
作者: Nages
作者博客: http://home.nages.cc:8081 (你是故意的還是不小心的, 咋還有端口. 作者: haha)
作者愛發(fā)電地址: https://afdian.net/a/nages
演示文件下載
完整的演示文件下載地址: http://home.nages.cc:1002/d/797811f4ad084859ab1f/
需求環(huán)境
docker(制作docker鏡像必備)
docker-compose(一鍵運行docker構(gòu)建腳本, 管理鏡像很方便)
注意事項
繼承鏡像的時候需要知道自己的系統(tǒng)架構(gòu), 你使用的docker鏡像不一定支持所有的系統(tǒng)架構(gòu)
dockerfile的格式
docker-compose的格式
注意服務端的游戲版本和jdk版本是否匹配
下載的服務器最好要提供.sh后綴的啟動腳本
如果在windows制作docker鏡像請確保你的電腦有安裝docker-desktop(docker桌面版)
因為linux 的權(quán)限比較嚴格, 所以有時候出問題可以先考慮下權(quán)限的問題
docker-compose 腳本啟動不成功檢查下docker-desktop是否啟動, 還有docker, 和docker-compose
有些整個包是通過當前工作路徑來獲取配置文件的, 需要修改docker-compose.yml中的工作目錄到指定的容器中的目錄才行
獲取我的世界服務端
想要把我的世界服務端從只能在windows上運行, 改造成可以在任何有docker的機器上運行的docker容器, 你必須得先有一個我的世界服務端
我這里拿e6e
的服務端做舉例
e6e官方地址
點擊圖中紅框的位置進行下載頁面的跳轉(zhuǎn)
等待5秒后自動開始下載
如果沒開始下載點擊此處嘗試下載
現(xiàn)在我們獲取到了服務端的安裝程序
把他解壓至桌面
因為我想在windows上制作完鏡像后給linux使用
雙擊.bat
后綴的服務端安裝程序進行下載服務端文件
開始下載服務端文件
下載服務端文件的時候記得開vpn, 否則會下載失敗
下載完畢, 同意eula協(xié)議
如果沒有eula.txt文件就手動創(chuàng)建一個并輸入eula=true
內(nèi)容
此時服務端文件已經(jīng)下載完畢了, 關(guān)閉當前窗口
找到eula.txt
文件并打開
把false改為true
eula=true
測試服務端是否正常
此步驟主要是保證服務器是否能正常運行, 只要確定服務器能正常運行即可
雙擊服務端啟動文件
此時服務器開始啟動
客戶端測試連接
因為是本地測試, 所以此處的ip地址為localhost
, 如果是云端服務器可以使用公網(wǎng)ip, 或者映射ip
可以觀察到客戶端能正確的觀測到服務器
客戶端進入游戲測試
成功進入游戲
客戶端查看任務數(shù)據(jù)
任務數(shù)據(jù)是以服務器為基準的, 所以能看見任務數(shù)據(jù)沒什么問題一般就沒問題了
到了這一步已經(jīng)測試服務端已經(jīng)沒毛病了, 可以關(guān)閉服務端了, 關(guān)閉快捷鍵ctrl+c
制作docker鏡像
新建一個文件夾, 我姑且取名為mc_server_demo
, 名字最好是英文加下劃線, 在這個文件夾下在新建一個dockerfile
文件夾, 用來存放dockerfile腳本
因為e6e的啟動環(huán)境需要jdk1.8, 所以繼承的鏡像需要進行調(diào)整
查詢鏡像版本
https://hub.docker.com/
我們需要8的版本
腳本內(nèi)容
編寫腳本文件
FROM openjdk:8
VOLUME ["/data"]
EXPOSE 25565
解釋下腳本的內(nèi)容
FROM 繼承的基礎(chǔ)鏡像
VOLUME 開放的容器內(nèi)的目錄, 容器可以理解為虛擬機
EXPOSE 容器對外開放的端口
制作docker-compose腳本
在mc_server_demo
文件夾下創(chuàng)建文件docker-compose.yml
文件
編寫內(nèi)容
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
的優(yōu)先級更高, 如果不寫container_name
就是使用第一個mc_server
位置上的名字ports 容器對外開放的端口, 可以開放多個, 左邊代表對外開放的端口, 右邊代表容器內(nèi)連接的端口
command 啟動容器時傳遞的命令
working_dir 容器內(nèi)的工作目錄, 有些整合包找不到文件或配置的時候需要配置, 一般不需要改
拷貝服務端文件
寫完腳本后, 在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文件壓縮后發(fā)送到服務器執(zhí)行docker-compose up -d
直接運行了
觀察下服務器的資源消耗
成功進入容器內(nèi)開啟的我的世界服務器
md每次一進服務器就有史萊姆找我麻煩
進入成功, 大功告成!!
打包服務器
在docker-compose.yml的文件下開啟命令行輸入docker-compose down -d
關(guān)閉容器
直接壓縮整個mc_server_demo
, 壓縮成zip格式方便解壓, 畢竟比較通用
上傳服務器, 這個看你們自己怎么上傳了, 然后解壓運行
docker-compose up -d
移植linux成功