「唉...這年頭什麼鬼都來找我租房子啊。」一位穿著藍白相間睡衣的女子一手拿著docker-compose.yml翻來翻去,一手拖著下巴,雙眼還不停的左右晃動,一邊自言自語道。
她是Docker,伺服器裡出了名的包租婆。今天她早早起床,把每間容器房間都清理了一遍,Volume都掛好、Network都隔好、還順便重新pull了幾個老房客的image,再不更新真的會出事。
「前幾天Node.js又辦深夜coding party,結果吵到隔壁的MySQL資料表差點鎖爆;Redis小妹記憶力雖然好,但一停電又全忘光;Nginx那傢伙更扯,開個80 port不關,搞得整棟都被外網ping爆。」抱怨歸抱怨,該幹的活她還是得幹。
「叮咚~~」門口的門鈴又響了,似乎不想給她喘息時間。這也很正常,整個伺服器十幾間房都她管,怎麼可能有空休息?
一位女孩拖著幾大箱plugin、外掛、theme 還有一堆 .zip 壓縮包走進來。
「老闆娘您好,我是WordPress,Sam叫我來這邊找您租房間,她說您這裡的網路環境好像比較順。」一位看似文質彬彬的少女站在門口。她柔順的長波浪深藍髮在陽光下略顯耀眼,胸前W字的徽章閃爍著銀白色的光芒。
「喔...WP喔。好。待會喔,我看看還有沒有地方讓你住。」Docker翻了翻入住登記簿,「302空的,你要去住嗎?」Docker邊推眼鏡邊回覆,看得出她的眉毛往下壓了幾圈。
「可以嗎?謝謝您。」可以搬到新房子住,WP瞬間綻開笑靨,「Yes~~」雖然看不出來,但看到擺著臭臉的Docker她其實有點怕,當然她不知道Docker的臭臉是因為事情太多很累。
「OKOK,話說你Volume有帶嗎?資料庫你有帶還是我幫你裝MySQL?另外需要物件快取嗎?我幫你問問Redis。啊,php.ini呢?最近太久沒用了,要改的話我可能還是要看一下喔。」
「啊...這是...我有帶備份的檔案,喔還有這個也給您,Sam說這個給您就好了。」WP把Sam在叫她來之前交給她的wordpress-stack.tar.gz轉交給眼前表情好像稍微溫和了點的Docker。
「喔喔,備份檔案啊...裡面有compose檔案喔,那好,我等等幫妳拉一下鏡像,你等我幾分鐘,快點拉給你。」Docker推了推眼鏡,坐到Portainer前開始東按西按。
「50%...70%...99%...喂MariaDB嗎?我這邊有個新住戶要開資料庫你幫我建一下...好,OK,等等我抄一下...」Docker開始忙碌了起來,這也難怪,拉鏡像、開資料庫、還原資料...各種鳥事都是她管。
「你說你叫WordPress是吧?好像有聽過這個名字...算了不重要,這個拿去,妳應該有配置檔之類的吧?自己收好喔,不見我不補發。另外要還原什麼自己弄,我只負責開好房間。」Docker把閃亮的古銅色鑰匙交給WP,「謝謝您。」WP露出了一抹微笑。Docker只是輕輕點頭致意,「門口出去右轉第一棟三樓電梯上去之後第二間就是了,東西別用太多,Volume之類的我都幫你還原好了,端口要開旁邊登記簿。」
「OK,謝謝您。」WP邊說邊走向旁邊的桌子,提起筆開始登記起來:
端口映射申請書
姓名:WordPress6Please respect copyright.PENANAlqxFCv9g3l
申請端口:80:80、443:4436Please respect copyright.PENANAhExcsfIrb2
申請緣由:對外提供服務6Please respect copyright.PENANAnRovnGBQew
申請時間:2025年五月九日
「總算有個地方可以放東西了,之前一直跟Next.js爭地盤真的有夠累人的。」WP打開房門後看著空蕩蕩的房間,總算釋下某些心理陰影似的自言自語。「等等...這是不是代表...嘿嘿嘿~~」某種陰謀正在產生中...
「沒想到還會有人來入住,」辦完WP的入住工作後,Docker像一團史萊姆般癱在椅子上,這個畫面大約持續了一個小時左右,此時的Docker當然不會想到,剛剛那位文質彬彬的少女竟然開始在搞事了...
「嗶~~嗶~~」睡了大概一個小時後,Docker突然被錯誤聲驚醒。桌上的電腦螢幕閃爍著紅光,彷彿將面臨世界末日般一直閃爍;伴隨著震耳欲聾的警報聲,剛睡醒的Docker懵懵糊糊就被反射神經叫到螢幕前。
分配的資源用量已超過配額,請檢查容器狀態。 了解更多
「蛤?」看到這則意外通知的Docker腦子總算是開機了,她的手指像敲琴鍵般飛快的在鍵盤上飛舞,試著調出所有事情經過:
姓名:WordPress6Please respect copyright.PENANABA3LXIXTlA
當前硬體用量:CPU(173%/75%)、RAM(1226MiB/1024MiB)6Please respect copyright.PENANARpITe6HRVb
先前操作:6Please respect copyright.PENANAALmcYLZ9kS
寫入/home/container/wp-content/plugins下的1,447個檔案 (x1,447)6Please respect copyright.PENANAMvcqByHjdV
編輯資料表 (x993)
說時遲,那時快,電話聲不等Docker震驚結束,話機螢幕上顯示著MariaDB來電。Docker一提起話筒,話機另一邊是怒火中燒、頭上幾乎冒火的MariaDB:6Please respect copyright.PENANAYvIjnOSVJL
「你那邊是不是有個叫WordPress的?那傢伙給我在資料表裡瘋狂寫入,資料儲存部門的SSD中控器姊姊已經打了幾通電話給我你知道嗎?你是不能把你那棟樓裡的人管好是不是?到底要我說幾次才懂...」「我這裡也是很嚴重啊!」頭痛的Docker拍了下額頭,電話噹的一聲掛斷。
「叩叩叩」,302號房間的房門響起敲門聲,好不容易搬到新房間正在幫自己『打扮打扮』的WP望向門口,敲門聲越顯急促,完全應證了敲門人的心態。
「這傢伙到底給我在裡面幹甚麼...」要找人算帳因此準備好的Docker不耐煩地繼續敲了幾下門,「喀噹~」一聲門鎖開啟,站在裡面的是臉上寫滿了「為什麼是你?」的WP。怒氣沖沖的Docker和滿臉問號的WP四目相對,然後...
6Please respect copyright.PENANAvo1TbmmLSZ
「啪!」
紙張的聲音劃破寂靜,Docker沒等WP開口就將一疊資料甩在她臉上。
「......。」
6Please respect copyright.PENANARtP8fiNFh0
「怎麼了?有什麼事情嗎?」WP冷淡的聲音首先打破這道寂靜,看得出來WP對這莫名其妙-至少對她而言是莫名其妙-的舉動充滿了疑問與不悅。
「你還問我?看看那個。」Docker也沒好氣地回應。
WP聽到這句話也不清楚個所以然,翻了翻文件,6Please respect copyright.PENANAuK3joTKUr9
容器"WordPress"占用的資源用量已超過建議配額,請檢查容器狀態。 了解更多
寫入動作過於頻繁,請檢查容器
.....WP手上握著目測至少20頁的終端輸出文件,臉色漸漸從茫然與不悅轉換成尷尬,最後...只見她臉上寫滿了「欸好像有點小......糟糕」的苦笑,與面前整面青筋的Docker形成非常強烈的對比。6Please respect copyright.PENANATq24ZzXz96
「呃...這、這不是什麼大問題啦...真的不是...我只是...裝了幾個外掛而已啦,真的...而已...」
「而已?」Docker複述一遍。隨著聲音些許的上揚,Docker似乎更加不爽(作者:自信一點,把似乎拿掉)
WP抬起頭,語氣聽起來的確很心虛,「真的啦...大概幾個而已...我算算看喔...」她掐起手指,「好像...37個吧?」
「37個??」看起來連Docker也沒想到眼前的少女竟然如此的狠,「你知道我剛剛被MariaDB和SSD部門那邊罵個狗血淋頭嗎?你有沒有想過其他住戶的心情啊?你知道你的Volume幾乎頂到樓下的Redis了嗎?」
「原來我房間屋頂的膨包是你幹的好事啊?」Redis穿著一身鮮紅外套出現在Docker的後面,她深紅的眼眸狠狠瞪著WP看,這景色真有些像殺人犯盯著被害人的前幾秒,值得慶幸的是Redis沒拿菜刀之類的。6Please respect copyright.PENANAuYbI7UijZR
「還有你為什麼十秒存一次草稿?DDoS嗎?」Docker手一伸擋住Redis,她要罵的還沒罵完呢,怎麼可能允許Redis搶在她之前罵?
「那個...如果斷電的話草稿不是會全噴嗎?我怕出事啊」WP講完之後還加了個哈哈。
「另外,」Docker深吸一口氣,非常努力的讓自己不要破口大罵,畢竟A棟還有其他人。她伸手搶過WP手中的報表,翻到最後一頁指了指Prometheus給的記憶體資料,「妳用了132MB的記憶體來拖動妳的選單位置。」
WP打了個哈哈,「我喜歡滑順一點的後台...」
Docker插著腰,看得出盡力不要罵得很難聽,「妳當這裡是高級商辦還是什麼?我們是輕量開發環境啦啊喂!」6Please respect copyright.PENANAQyzX39HDy1
WP低著頭,試圖轉移話題:「不過,我有備份……放在/wp-content/backups/oldbackup_final_use_this_really_final.zip裡面,應該可以救一下吧?」6Please respect copyright.PENANARSAdsxF8bN
Docker:「你這命名方式我就知道你根本沒測過能不能還原。」6Please respect copyright.PENANAxAjuLlH8uG
WP還沒來的及回答,Redis背後出現了兩名少女,束著低馬尾的墨綠色長直髮少女氣沖沖地走過來,「好樣的一堆人都在這裡,是誰動了我的3000端口?我dev server開了一個多小時不給我跑預覽,誰做的,快點給我放掉它!」
Docker使了個眼色看向WP,「我?呃……我只開了個 Elementor 預覽模式,不知道他為什麼跑到 3000 port 啊!」
Next.js:「那是我的預設耶!你們WP Plugin是在寫什麼Port binding啊!?乖乖待好妳的80和443不好嗎?而且妳是不是都不知道有個東西叫做反代伺服器?去跟Nginx登記一下不是就可以拉8008轉80到WAN網域嗎?」
不遠處的Nginx冒出頭來:「我今天光是WP的request log就快超載了,她這樣還想申請SSL憑證你敢信嗎?」
Let's Encrypt揮了揮手,「妳開自簽憑證比較快,這渾水我可不蹚。」然後就消失了。6Please respect copyright.PENANARVpdVfXm4z
6Please respect copyright.PENANAvdztt49XDt
接下來的十秒鐘內,整棟樓的租戶都參與了這場混戰。有人在吵volume、有人在搶端口,有人甚至開始討論WP的HTML結構為什麼這麼深,我絕對不會說那個是JS,至於JS啥時出現的...建議擲筊。6Please respect copyright.PENANADlFNf6jJdJ
6Please respect copyright.PENANAiRlfJml5Eq
Docker疲憊地嘆了口氣,默默從懷裡掏出一張「隔離容器調度單」。
6Please respect copyright.PENANAzZwzc5UG8i
6Please respect copyright.PENANAOCCuYliVxW
註解
docker-compose.yml:這是一個用來設定如何建立和運行「容器」的檔案。你可以把容器想像成一個個獨立的小房間,裡面裝著不同的應用程式。這個檔案就像是這些小房間的設計圖,告訴 Docker(下面會提到)要怎麼蓋這些房間。Docker:這是一個軟體,就像是這棟「容器大樓」的包租婆。她負責管理所有的容器,確保它們不會互相干擾,並且可以順利運作。6Please respect copyright.PENANAT5n2fLtvdC
Volume:可以想像成容器的「儲藏室」,用來存放應用程式需要的資料。這樣,即使容器被關掉,資料也不會遺失。6Please respect copyright.PENANAFwsKJJN5PB
MySQL:這是一個常用的「資料庫」軟體,用來儲存結構化的資料,例如使用者帳號、文章內容等。6Please respect copyright.PENANABfiqAJaCut
Redis:這是一個「快取」系統,可以把常用的資料暫時儲存在記憶體中,讓程式可以更快地讀取,加速網站的運作。6Please respect copyright.PENANAR8ZU1qdkvA
compose檔案:定義多個 Docker 容器如何一起運行的檔案6Please respect copyright.PENANACc1Ldlz1i8
拉一下鏡像:指的是從遠端伺服器下載容器的藍圖(在技術上稱為image)。6Please respect copyright.PENANAybHagUHuQ2
Portainer:這是一個用來管理Docker容器的軟體。6Please respect copyright.PENANAmkGyDEc4Vs
MariaDB:這是另一個常用的資料庫軟體,是MySQL的一個分支。6Please respect copyright.PENANA10m9I4ctRt
Volume:Docker容器用來儲存資料的空間6Please respect copyright.PENANAWeHiWkuCXj
端口:應用程式在容器內使用的「門牌號碼」。6Please respect copyright.PENANAbfK1eMecyf
端口映射:將容器內的端口對應到伺服器的端口,讓外部可以訪問容器中的應用程式。例如,將容器內的 80 端口映射到伺服器的 80 端口,這樣使用者就可以透過伺服器的 IP 位址來訪問容器中的網站。6Please respect copyright.PENANA8xSpi6UNMh
寫入檔案、編輯資料表:這些都是應用程式對伺服器硬碟和資料庫進行的操作。DDoS:分散式阻斷服務攻擊,這是一種惡意的網路攻擊,透過大量的請求讓伺服器癱瘓。俗稱群毆6Please respect copyright.PENANAbJFxDrOk2vPrometheus:一個用於監控伺服器和應用程式運作狀況的工具。6Please respect copyright.PENANAwbMHRLcVc8
Elementor:WordPress的一款頁面編輯器。6Please respect copyright.PENANAqqsTBQlUsp
反代伺服器:一種伺服器,可以代理用戶的請求,並將其轉發到後端的伺服器。6Please respect copyright.PENANAM1FHiBqPK7
Nginx:一個流行的網頁伺服器軟體。6Please respect copyright.PENANAiHVGsdfrd0
SSL 憑證:用於加密網站資料,確保傳輸安全,在看網站時看到的https的s就是因為這個。6Please respect copyright.PENANAi45gN1zssh
Let's Encrypt:一個提供免費SSL憑證的機構。6Please respect copyright.PENANANaQBOSolkB
自簽憑證:一種由網站自行簽署的 SSL 憑證,安全性較低。6Please respect copyright.PENANAKkc6XoT1Zl
6Please respect copyright.PENANAER0KU6lt39
作者後記6Please respect copyright.PENANAA6OhurS7xN
夭壽喔,下禮拜考會考...6Please respect copyright.PENANA3XucGf3g4I
話說,沒想到我竟然會特別去學Docker,只為了寫這篇文章。我知道明眼人應該有些都已經看出我有請GPT幫我想一些內容,但主要的內容還是我寫啦,畢竟GPT沒有我這麼嚴重的中二病(還是應該是神經病?)
好啦,就這樣,感謝各位的支持(真的有嗎才是重點...),我們下篇文再見,會考考完後吧?
ns3.139.240.192da2