就算樂高化還是很可愛的鯨魚~
圖片來源:Docker (@Docker) / Twitter
這篇先以 Docker 的環境下測試架設,下一篇會以 Kubernetes 環境來做些轉換,也可以藉此了解他們的差別
(本篇主要是在練習哦~真的想架設的可以用 社群版本的 image 在下方有一些補充)
既然架好了 cluster 就要來測試一下對吧?
但我又不想用 hello world 來測試...
那就... Minecraft Server 吧!
這是絕對是研究用途!不用懷疑!
首先要先製作 image ~
在 Docker 的生態下就要寫 Dockerfile,先簡單來寫一個當作練習吧!
先來選一個 Base Image,我們將環境定為 linux
, java
,從 Docker Hub 上可以直接找到 openjdk 釋出的 image
選擇一個 tag,這裡使用 Debian 11 (bullseye) + java 18 為底的 image
docker pull openjdk:18.0.2-jdk-slim-bullseye
如果想測試這個 image 可以直接使用上篇介紹的 Docker 延伸模組操作
openjdk 這個 image 預設是使用
jshell
啟動,如果要使用一般的 bash 還是要下指令哦!
docker run --rm -ti openjdk:18.0.2-jdk-slim-bullseye bash
接著建立一個 Dockerfile
# 使用 openjdk 做為 base image
FROM openjdk:18.0.2-jdk-slim-bullseye
# 指定工作目錄
WORKDIR /minecraft-server/1.19.2
# 安裝 curl (後兩條是用來清除 apt cache)
RUN apt-get update
RUN apt-get -y install curl && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# 新增 EULA 檔
RUN echo eula=true > eula.txt
# 從官網取得 Minecraft Server 檔案
RUN curl https://piston-data.mojang.com/v1/objects/f69c284232d7c7580bd89a5a4931c3581eae1378/server.jar -o server.jar
# 新增 Volume 確保 Server 資料保存
VOLUME [ "/minecraft-server/1.19.2" ]
# Minecraft Server 預設使用 25565 Port
EXPOSE 25565
# 啟動 container 時啟用 server
CMD [ "java", "-Xmx2048M", "-Xms1024M", "-jar", "server.jar", "nogui" ]
再來要打包 Image
docker build -t mcs-test:1.0 .
以下是關於 Image Layer...
從 output 可以看到有9個 step
每個 RUN
都是一個 Image Layer,如果要更快速的 Build Image,要想想步驟的前後順序哦!
假如我現在改了 Expose
port
...
...
# 測試改 Layer
EXPOSE 25566
# 啟動 container 時啟用 server
CMD [ "java", "-Xmx2048M", "-Xms1024M", "-jar", "server.jar", "nogui" ]
來看看 Build Image 會發生什麼事~
docker build -t mcs-test:1.1 .
前幾步的 Layer 會直接使用 cache 加速 Build 的時間~
Dockerfile 短短幾行哲學可多了~
接著來用 Docker container 測試
docker run -d --name mcs -p 25565:25565 mcs-test:1.0
這會直接佔用主機的 25565 port
如果你的主機有額外的 ip 可以使用--ip xx.xx.xx.xx
指定
可以看到 container 正在運行,也正在產生出對應的檔案
也產生新的 Volume
點 View Logs 查看目前進度
等待完成後使用 telnet
測試
telnet localhost 25565
成功~這樣就有一個 Minecraft Server 了
透過 Minecraft 學習 Docker 還不錯吧~
我提供的只是單純以手動的方式安裝轉換成 Dockerfile,社群版本有提供更多功能,也可以透過看別人的 Dockerfile 學習更多技巧哦~
如果真的想架設的話可以使用社群開發的版本哦!
Minecraft Sever 安裝教學 - Docker
提供一下指令參考~
docker run -d -it --name mcs \
-v /home/mcs:/data \
-p 25565:25565 \
--ip <your_ip> \
-e EULA="TRUE" \
-e VERSION=1.19.2 \
-e MEMORY=4G \
-e TZ=Asia/Taipei \
itzg/minecraft-server
如果要連接 Minecraft Server 的後台要使用特別的 cli
docker exec -i mcs rcon-cli
退出一樣使用
Ctrl + C
就可以了
明天先看看要怎麼轉換到 Kubernetes 上吧~