antony@notes:~/container$ cat "Container-核心技術思維.md"
Container 核心技術思維
Container 核心技術思維
甚麼是 Chroot
- Chroot 可以讓我們重新設定 Process 的根目錄
- 重新設定的根目錄裡,需有要執行的程式,以即它的相依檔
Container 為何要用 Overlay2

- Overlay2 本身可以共用同一個 lower 目錄
copy up和whiteout只會發生在 upper 目錄- Container 真正使用的是 Overlay2 掛載在 merged 的那層目錄
- Container 使用的檔案系統可換為
- Hadoop 的檔案系統,當 Container 在運作時,產生的資料就會存在 Hadoop 裡面。
- Rook
- nfs
- 我們掛什麼檔案系統,Container 就會用什麼檔案系統
- 只要是檔案系統被設定為 read only 掛載 ( mount )上去以後,就算是 root 帳號也沒辦法進行更改
- 假設有一台 Linux 作業系統的電腦,系統一上來,硬碟被 mount read only,代表在這台電腦對硬碟的所有一切內容皆無法更改,就算登入 root 也沒辦法更改,如果要破格,該怎麼做?
- 把該電腦硬碟拔起來,插到自己的電腦上,這時候原來的作業系統不會 mount ,我們自己 mount 的時候不要設成 read only 就好
- 資安大漏洞 : 其實只要 Container 動用 Overlay2 ,到它所在的主機打一個 mount ,就能知道 lowerdir 和 upperdir 是甚麼目錄,因為 upper 是 read write 的權限,所以 upper 目錄有甚麼重要檔案,通通拉走
為何用 Alpine Linux
- 因為它很精實,所以不容易被攻擊,當主機不容易被攻,我們在裡面建的 Container ,或是其他應用系統,就會被保護起來,即使應用系統本身有資安上的遺憾,也無仿。
- 舉例 : Container 的檔案系統就難以被破壞。
Container 為何要用 CGroup
- 現在台灣大環境的情況,大多數人沒有針對 process 做使用硬體資源上的限制,而為何 Container 就要做限制 ? 我的電腦上面跑的一堆程式沒限制也沒事啊 ?
- 因為有了 Container 以後,一台機器可以跑很多台 Contianer,跟以前不一樣了,以前一台機器只跑一個應用系統(人資系統, MySQL …等),現在一台電腦可以跑很多應用系統,如果不限制硬體資源,很容易出事