這不是一個新的技術,在業界已經運用很久,使用容器好處多多,這裡不做額外教學,請自行Google,學習的過程是有趣的。
※※※具備知識※※※
以下以1(不熟)到10(熟)為衡量基準
1. LINUX-like(3分)→會安裝LINUX-like(會按一下步、設定IP)
2. Docker(5)→要懂的基本指令 docker images、docker run、docker attach
3. LINUX基本指令(3分)→會下ls、chmod
4. 會使用Google(10分)→懂得自己找答案
5. TCP/IP知識(5分)、了解port forwarding等……
※※※使用軟體※※※
1. OS:ubuntu22.04 LTS 64位元
2. Software:docker
※※※以下環境為安裝好Linux及Docker※※※
基本指令解說
-v | 當docker container 刪除掉之後,存放在docker container 上的資料也就會跟著刪除掉,避免這個悲劇。我們透過docker 的 volume 功能,把資料寫入到實體主機上,也就是指令-v使得實體主機的資料夾路徑 Mapping 到 Container 的資料夾路徑。 |
--net=host | container 的網路設定和實體主機使用相同的網路設定 |
--name=csgo-g9 | 命名container 為csgo-g9 |
※※※開始※※※
//先在home建立目錄,任何名稱都可以,以本文為例,建立csgo-g9(Linux指令)
$ mkdir -p/home/csgo-g9 $ chmod 777 /home/csgo-g9 |
//repository下載 image(docker pull)
$ docker pull cm2network/csgo |
//查看image是否下載成功(docker images)
$ docker images |
※※※執行Container※※※
//下載image之後,就可以執行container(docker run)
$docker run -itd --net=host -v /home/csgo-g9:/home/steam/csgo-dedicated/ --name=csgo-g9 cm2network/csgo |
就這麼簡單,不要懷疑,這樣你自己就有一台CSGO SERVER。
如果你想再掛入模組等,之後自己可以到/home/csgo-g9/自行加入metamod、sourcemod,但也有更進階方式,直接寫Dockerfile build image,把metamod、sourcemod直接包入。
/*進階指令(在啓動container時加入)*/
1.-e SRCDS_TOKEN={YOURTOKEN}想放上網路,就必須自己去申請專用的token,請 參考https://steamcommunity.com/dev/managegameservers
2.-e SRCDS_HOSTNAME="G9 CSGO Server"自己的主機名稱
3.-e SRCDS_MAXPLAYERS=20 主機人數
4.-e SRCDS_NET_PUBLIC_ADDRESS=61.216.146.51 (Internet IP)
5.-e SRCDS_PORT=27015 (要連線的port)
※※※範例※※※
docker run -itd --net=host -v /home/steam/csgo-g9:/home/steam/csgo-dedicated/ \
--name=csgo-g9 \
-e SRCDS_NET_PUBLIC_ADDRESS=61.216.146.51 \
-e SRCDS_MAXPLAYERS=20 \
-e SRCDS_GAMETYPE=0 \
-e SRCDS_HOSTNAME="G9 CSGO Server" \
-e SRCDS_GAMEMODE=0 \
-e SRCDS_PORT=27015 \
-e SRCDS_TOKEN=148C2A86E7E017C82XXXXXXXXXXXXXXX cm2network/csgo
/*其他指令參考*/
SRCDS_TOKEN="changeme"
SRCDS_RCONPW="changeme"
SRCDS_PW="changeme"
SRCDS_PORT=27015
SRCDS_TV_PORT=27020
SRCDS_NET_PUBLIC_ADDRESS="0"
SRCDS_IP="0"
SRCDS_LAN="0"
SRCDS_FPSMAX=300
SRCDS_TICKRATE=128
SRCDS_MAXPLAYERS=14
SRCDS_STARTMAP="de_dust2"
SRCDS_REGION=4
SRCDS_MAPGROUP="mg_active"
SRCDS_GAMETYPE=0
SRCDS_GAMEMODE=1
SRCDS_HOSTNAME="New CSGO Server" (CSGO伺服器名稱)
SRCDS_WORKSHOP_START_MAP=0
SRCDS_HOST_WORKSHOP_COLLECTION=0
SRCDS_WORKSHOP_AUTHKEY=""
ADDITIONAL_ARGS=""
Reference