雲端與容器基礎

關於容器映像檔與容器的關係,下列何者正確?

  1. A停止容器時,在容器內變更的內容會自動寫回映像檔,覆蓋原本的映像檔
  2. B映像檔是唯讀的範本,可從1個映像檔啟動多個各自擁有可寫入層的容器
  3. C從1個映像檔同時只能啟動1個容器,要啟動第2個,必須事先以別的名稱複製映像檔
查看答案與解析

正確答案:B. 映像檔是唯讀的範本,可從1個映像檔啟動多個各自擁有可寫入層的容器

映像檔是彙整執行應用程式所需檔案與設定的唯讀範本,容器則是由映像檔建立的執行單位。建立容器時,會在映像檔的各層之上疊加該容器專用的可寫入層。因此可從1個映像檔啟動許多容器,各容器中的變更不會影響其他容器或映像檔。若想把變更保留為映像檔,一般做法是修改 Dockerfile 並重新建置映像檔。

  • A. 在容器中的變更只留在該容器的可寫入層,映像檔不會自動改變。
  • B. 正確。映像檔是共用的,每個容器各有自己的可寫入層。
  • C. 同一個映像檔可以啟動任意數量的容器,不需要複製映像檔。
練習這個領域 前往領域頁面

雲端與容器基礎的其他題目

  1. 在從某映像檔啟動的容器內,修改了映像檔中所含的設定檔 /etc/app.conf。在 Docker 一般的儲存機制(overlay2 等)下發生的事,下列何者正確?
  2. 為了解開500 MB的封存檔 data.tar.gz,以上面的 Dockerfile 建置映像檔。雖然解開後在同一個 RUN 中刪除了封存檔,映像檔仍然大了一個封存檔的大小。原因與對策的組合,下列何者最適當?
  3. 有5個映像檔,都在同一個基礎映像檔(120 MB)之上各疊加30 MB的專屬層。不考慮層的壓縮與中繼資料的容量。把這5個映像檔全部拉取(pull)到1台伺服器時,映像檔使用的磁碟容量為下列何者?
  4. 在上面的 Dockerfile 中,以 docker build 建置映像檔時執行的指令,與以 docker run 啟動容器時執行的指令,其組合下列何者正確?
  5. 以 docker run pinger example.com 啟動由上面的 Dockerfile 建置的映像檔 pinger。在容器內執行的指令為下列何者?