還記得那是個風光明媚的下午,我正在實驗室中「愉悅的」寫著我的畢業論文,叮咚,我的手機響了一下。
「火笨,你今年可以支援活動嗎?幫忙講課一下。」,啊,原來是計畫助理的小凱的訊息呀~那我就安...等等?講課?我?!
壓抑著激動的心情與顫抖的雙手,我回覆了小凱:「今年...今年總算輪到我了嗎?」,「沒問題,就交給我吧!」。
開開心心的答應了小凱的邀約,輕輕鬆鬆地準備著課程與題目,心裡想著:「拜託,我都講幾次課了,這個課程一樣是輕輕鬆鬆 Des 啦~」。
叮咚,叮咚,叮咚,我的手機又響了,這次是我的好麻吉小遠:「火笨,聽說這次你也講課,完蛋了,題目今年要放在哪裡?學生們又要開始破壞我們的題目啦!」。
看著訊息,我心中坑愣了一下...這就是本次的故事的開始...。
想起去年當助教的情景,我就一陣後怕,每年活動的高中生真的是令人捉摸不定,其中最令人頭痛的就是對於練習題目的破壞力。今年為了解決這個問題,避免每次學員們上課都會因為題目被其他同學刪掉而無法練習,我們勢必需要針對這個問題做一些改變。
尤其今年希望講解到的題目內容中有 Linux 相關的練習,想藉由簡單的題目設計來引導學員們了解 Linux 的基本操作、檔案系統、權限等等不同的知識,如果學員們無法順利練習,那麼這次的課程就會失去了意義。為此就讓我們來聊聊如何設計與保護我們的題目吧!
情境設定 - Docker / Linux
這次的課程我們使用了 CTFd 作為解題與練習的平台,同時為了方便管理與確保題目在環境中不會被互相影響,我們決定用 Docker 來進行題目的架設與維護。這樣的好處很直觀,
雖然所有題目皆架設在同一台主機中,但因為 Docker 的隔離性,可以確保題目之間不會互相影響。
Docker 可以協助我們快速建立、調整題目,並且還擁有很棒的性能表現,不會犧牲太多效能。
在所有人的共識下,我們決定將所有題目都建立成一個一個的 Docker 容器進行建立與維護,而且所有類型的題目都可以設計。
讓我們先趁機了解 Docker 吧!
Docker 的常用工具與做法
我們這邊沒有要從頭開始解釋 Docker 是什麼、容器化技術又是什麼,我們從應用面出發,來看看我們在這次的課程中,會使用到的 Docker 工具與做法。
Docker 所包裝出來的
家裡網路壞掉中,搶修中...
To be continued...