Skip to content

antony@notes:~/container$ cat "Container-核心技術思維.md"

Container 核心技術思維

2022-08-27· container ·系統工程

Container 核心技術思維

甚麼是 Chroot

  • Chroot 可以讓我們重新設定 Process 的根目錄
  • 重新設定的根目錄裡,需有要執行的程式,以即它的相依檔

Container 為何要用 Overlay2

  • Overlay2 本身可以共用同一個 lower 目錄
  • copy upwhiteout 只會發生在 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 …等),現在一台電腦可以跑很多應用系統,如果不限制硬體資源,很容易出事