小賴《Docker 實戰指南》課程心得
前陣子上了小賴老師《給網站工程師的網路課》,沒多久又上了《Docker 實戰指南》,此篇即為筆者參加 2025 年 5/10、5/17 小賴老師在五倍學院的課程心得,也感謝同事 Joel、Chenyuan 響應我的團報課程邀約。
身為一個前端工程師……不,應該說是 Web 工程師,即便沒實際用過 Docker,肯定也聽過它的大名,知道它是用來解決什麼問題的。但工作中會不會真的用到,又是另一回事了。
而且退一步說,即便公司有用到,在部門專業分工的情況下,Dockerfile 或 yml 檔案也不一定是由 Frontend Team 的人來修改。
一次正式站爆炸的反思
某次公司網站在工程師們沒做任何操作的情況下,正式站 Client 突然爆炸,事後的排查其實是 GTM 被外部門注入了有問題的行銷程式碼,細節不多說了。
而在排查的當下,其中一個方向是基礎環境建設的問題,例如 CI/CD 還有 Docker,當時技術高層在比較急的狀況下說:
Simon 對這東西稍微不熟,等等部署請 Backend Team 的 xxx 處理
說完他就離開辦公室趕緊去和公司更高層開會解釋狀況了。如果用漫畫《刃牙》的梗圖描述心情,我聽到是這樣笑笑:
不過我並沒有不高興,也能同理他的情緒,這句話語氣也不是批判,要說噹人也還好,就只是急了一點(大家都很急,事後側面觀察的 PM 評價:你們的抗壓性真的很好)
我甚至不認為他這樣講有什麼問題,現實是在專業分工明確的公司裡,當遇到 P0 等級重大事故,交給最熟的工程師來處理是合理決策。
真正戳到我的不是這句話,而是後來的場景。
當團隊討論基礎建設是否 rollback、重新部署、還是導到備援系統時,在某個議題下要重新部版,突然全場安靜了一下,然後不誇張,當時討論的同事們,無論是同組的還是別組的,資淺的還是比我更資深的,全都把頭轉向我。
我當下愣住,然後腦中響起一個聲音:
啊?又是我???
反應如下圖:
那一瞬間我很無奈,也很生氣。
不是氣大主管說我不熟,而是氣自己和氣大家的眼神期待,但... hello?大主管離開辦公室前講什麼你們忘了嗎?見微知著,這個反應說明了很多事,謝謝你們對我有期待,也讓我反思:
或許我平常給人的印象,和實際的技術能力之間,已經出現了落差。
所以大家在壓力下還是會下意識地看向我?
這件事也給我一個明確的訊號:哪怕這領域不是日常工作的核心,也不能完全忽略它,因為危機來的時候,我們也會被拉進戰場。我的確在日常開發中一些模糊地帶能補位幫忙…,或者提供建議,但不代表我什麼都懂,例如 Docker。
我對 Docker 的認知,大概還停留在 2021 年剛進現職公司的時候。當時只是出於興趣和為了後續面試而簡單接觸過,知道它能做什麼、解決什麼問題,現在要用的時候我頂多問問 ChatGPT,僅此而已。
至於它的底層機制、設計理念、執行細節… 抱歉,全都不熟。即使平常會下班自學,但坦白說,Docker 從來不是我的優先項目。所以當同事 Oakley 賈賀逗相報推薦了這堂課,我就馬上揪了幾位平常對進修有興趣的同事一起報名了。
我還是需要持續往上,即便那超出我日常的工作範圍。
不同階段能有不同的收穫
拉回課程心得,那這堂課適合誰?我覺得要看你處在哪個階段、想解決什麼問題,但我推薦這堂課程,因為此堂完美適用:Junior 學個響、Mid 擴展眼界、Senior 複習原理這句話。
不同階段來上,都會有收穫,只是收穫的東西不一樣。這才是真正好課的樣子,我認為小賴老師最棒的幾點是:
對於 Jr:課程開始前 15 分鐘居然不是在講 Docker
在職場上討論公事,有些專業的工程師或是 PM,會在議題開始前重新說明「前情提要」,幫已懂的人對其認知,幫不懂的人認知到為什麼我們要討論這些東西。
而對於此堂課,小賴老師課程開始前的 15 分鐘居然不是在講 Docker,而是在講 Linux 的 process 的一些內容,其目的是在對齊學生聽眾的認知與名詞定義,這樣後續的授課或討論才能跟得上,大家的認知心智才能盡量維持在同一條線上。
而且整個過程也不艱澀,我認為高中職、大學或自學過計算機概論的人都應該聽得懂的程度。
對於 Mid:不用老師一句話,你就轉頭電腦跟著下指令
五倍學院和小賴老師開的這堂課程,大約有 80% 是在聽老師講,20% 才是實作,其中那 80% 的授課時間,你手會放在鍵盤上只有2種狀況:
- 你在做筆記
- 你在做與此堂課無關的事情
難道不存在跟著老師下指令的狀況嗎?有的但機會很少,因為小賴老師也會一直說「看我操作、看我操作、課程講義和簡報有寄給你們了、你們就看我分享」之類的話。
對於在職場上工作、參加過技術社群的工程師們,一定有看過一種現象:一群工程師圍著另一個工程師,然後聽這位工程師侃侃而談的講述一些知識或經歷。
整個授課過程的調性和節奏就是小賴老師一直都處在那種:工程師很興奮分享的狀態,她在台上一直和述說分享這些知識和理論,你可以放心的把大腦思緒交給她。撇開作業或是實作環節不說,你甚至就是手放桌上不敲一行指令聽他分享,我認為也沒問題。
對於 Sr:學習或複習底層原理、交流更多知識與情境
如果你是 Senior 工程師,你可能早已會用 Docker,但我覺得這堂課會是個 review 原理的好機會。小賴老師的講解方式蠻有層次的,從為什麼需要容器,到 Image 是怎麼疊層(UnionFS),甚至談到 CI/CD 的實務考量,這些你可能都碰過,但透過系統化的整理重新回顧,會有一種「知識被對齊」的暢快感。
課程結束我也問問大佬同事 Joel 心得:確實很多內容他早就會了,部分內容對他只是複習,但課程中他還是有學到一點新東西,並且有不少啟發。
扎實內容能挑起工程師的熱血和成就
第二週有一個 debug 實作題我印象特別深,是 Web Client、Web Server 與 SQL 多方連線問題。一開始照著設定打下去,結果 web 端就是打不到 API,console 一片紅。
當下我也不是直接問助教,而是開始 debug。坐一旁的同事很快速的就排查解決了這個問題。知道我是 Frontend Team 平常較少碰 Docker ,於是他問我知不知道問題在哪?然後我就大致描述我的方向。
....完全對,就是這個方向。
還好現在 AI 時代,指令不熟可以問 AI 。
當我靠自己解出這個 Docker bug,那感覺真的很棒,我也再次印證了我只是對這個東西不熟,但不代表我已經和幾年前的 Jr 一樣了。
結語:理論比指令更重要的認知轉變
過去自學 Docker 的時候,幾乎都是從網路文章、ChatGPT、影片、書籍上撿指令來用。那時候的我,對什麼是 container、什麼是 image、volume、network、entrypoint……全部都是模糊的,反正照著打總會動。
但這堂課很不一樣。老師一開始就不是從 docker run
開始講,而是先花時間解釋了很多乍看與 Docker 無關的內容,後面把它連起來,例如:Linux 的 process 隔離、namespace、cgroups ..等。
對我來說這門課最大的價值不是學指令,而是為什麼要這樣寫?為什麼這樣操作才對?從「會跑起來」走向「知道為什麼這樣跑」,這中間的距離很遠,但這堂課幫我跨了過去。
所以在上《Docker 實戰指南》課程之前,我會 Docker 嗎?不..我不敢說我會,我只是知道和會 Google 找指令而已。
上完了 Docker 課程,我敢說我會 Docker 了嗎?不,我還是不認為我會,不如說我作為工程師早過了達克效應的山頂很多年了,我還是認為自己只會 Google 或問 ChatGPT 找指令而已。
可是..很難描述那種感覺,離開教室後,工作上什麼事情都沒有改變,不同的是:心裡踏實很多了,有種舒坦、準備應付接下來挑戰的感覺,酣暢淋漓。
這裡也放上五倍學院課程結束時的拍照,第一排左邊數過來第二個戴白帽的是我,看看我上完笑得多開心啊XD
回饋老師與五倍版的心得
最後也放上課程結束,老師會請大家填寫問券心得回饋。
以下是我填寫的問券心得部分內容,讓大家參考參考,我就不另外多開一篇文章了:
上課前的預期
報名這門課單純是想彌補自己對 Docker 的空白,在報名 Docker Workshop 之前,我對 Docker 的印象其實很模糊,我知道它是「部署」或「解決跨平台開發環境問題」常會用到的工具。雖然在專案中會看到 Dockerfile ,但因為工作上分工明確,這塊通常都是 SRE/DevOps 處理,我沒什麼實際理解的機會。
在 workshop 中學到了什麼?
- 容器(Container)本質上就是一個在 Linux 上執行的、被隔離的 Process
- Docker Network
- 練習建構 WordPress + MySQL 的服務、不同 container 連接的眉角
- 瞭解 Union File System 與其中 copy_up 和 whiteout
- 資料持久化
- 學會讀懂並轉換 Docker CLI 與 Docker Compose
- 撰寫 Dockerfile 與最佳化的眉角
- Docker Init 與 docker AI
在 workshop 中最有幫助/滿意的部分是什麼?
很滿意既有理論,也有實作練習。
因為我是前端出生的 Web 工程師,雖然現在也會碰到 Backend ,但工作上接觸 Docker 的機會不多。以往若想自學 Docker,翻書或找網路上的教學影片,大多只在講解指令,乍看之下有點無聊、也難以理解背後原理。
而這次 workshop 不一樣,不是帶著大家打指令,反而花了很多時間在說明背後的概念與理論,特別是第一週剛開始時,小賴老師沒有馬上開始教 Docker ,反而是幫大家補了一些必要先備知識,幫大家對齊觀念後才正式切入 Docker 的內容,讓我覺得很安心!!
除了理論,這門課也很重視實作。每週都有作業與練習環節,而且課堂上還有助教協助,可以即時把剛學到的內容實際操作,這對我幫助真的很大。
印象最深的是第二週的課程,我自己獨立解出了 Web Client、Web Server 與資料庫(用 Redis 代替)之間的連線問題,雖然這對很多後端工程師來說可能只是基本題,但對我來說是個小突破,當下解決時真的頗有成就感!
在 workshop 中最不足/不滿意的部分是什麼?
兩周這麼快就過去了,感覺老師還有很多能分享的,我也還能繼續接收老師課堂的資訊,實在是意猶未盡😆