雲端與容器基礎
在從某映像檔啟動的容器內,修改了映像檔中所含的設定檔 /etc/app.conf。在 Docker 一般的儲存機制(overlay2 等)下發生的事,下列何者正確?
- A檔案會先複製到容器的可寫入層再修改,不影響映像檔與其他容器
- B直接修改映像檔層中的檔案,從同一映像檔啟動的其他容器也會看到變更後的內容
- C映像檔層是唯讀的,因此映像檔中所含的檔案無法修改,寫入會發生錯誤
查看答案與解析
正確答案:A. 檔案會先複製到容器的可寫入層再修改,不影響映像檔與其他容器
容器的檔案系統,是在唯讀的映像檔層之上疊加每個容器的可寫入層,並呈現為一個整體。第一次修改位於下層的檔案時,該檔案會被複製到可寫入層,之後就使用複本(寫入時複製)。因此映像檔層不會改變,也不影響共用同一映像檔的其他容器。大型檔案的第一次複製需要時間,所以像資料庫資料這類頻繁寫入的內容要放在磁碟區(volume)中。
- A. 正確。第一次寫入時會複製到可寫入層。
- B. 映像檔層是唯讀的,並由多個容器共用,因此不會被直接修改。
- C. 寫入不會發生錯誤,而是在複製到可寫入層之後進行。