什麼是Docker

用於建置容器映像檔、與登錄檔交換映像檔,以及啟動與管理容器的代表性軟體套件。由 Dockerfile 中撰寫的指令建置映像檔,以 docker run 啟動容器。可用 -p 公開連接埠、以磁碟區或繫結掛載保存資料,並進行網路設定。映像檔與容器的格式已以 OCI(Open Container Initiative)規格標準化,因此 Docker 以外的工具也能使用同樣的映像檔。

日文名稱: Docker

「Docker」出現在1領域的6道練習題中(雲端與容器基礎等)。

這個名詞所屬的領域: 雲端與容器基礎

練習Docker的題目

在 Linux 主機上使用 Docker,從以與主機不同的發行版為基礎的映像檔啟動容器,並在其中執行 uname -r(顯示核心版次的指令)與 cat /etc/os-release(顯示發行版資訊的指令)。關於結果的說明,下列何者正確?

  1. Auname -r 與 /etc/os-release 都顯示主機的核心與發行版的資訊
  2. Buname -r 與 /etc/os-release 都顯示映像檔所依據的發行版及其核心的資訊
  3. Cuname -r 顯示主機的核心,/etc/os-release 顯示映像檔的發行版
查看答案與解析

正確答案:C. uname -r 顯示主機的核心,/etc/os-release 顯示映像檔的發行版

容器共用主機的核心,因此向核心查詢的 uname -r 即使在容器內,也會顯示主機核心的版次。另一方面,/etc/os-release 是檔案,所以讀取的是容器看得到的檔案系統,也就是映像檔中的內容,並顯示映像檔的發行版名稱。映像檔不含核心,只包含指令與函式庫等使用者空間的檔案。因此,以主機核心所沒有的功能為前提的程式,在容器內也無法運作。

在從某映像檔啟動的容器內,修改了映像檔中所含的設定檔 /etc/app.conf。在 Docker 一般的儲存機制(overlay2 等)下發生的事,下列何者正確?

  1. A檔案會先複製到容器的可寫入層再修改,不影響映像檔與其他容器
  2. B直接修改映像檔層中的檔案,從同一映像檔啟動的其他容器也會看到變更後的內容
  3. C映像檔層是唯讀的,因此映像檔中所含的檔案無法修改,寫入會發生錯誤
查看答案與解析

正確答案:A. 檔案會先複製到容器的可寫入層再修改,不影響映像檔與其他容器

容器的檔案系統,是在唯讀的映像檔層之上疊加每個容器的可寫入層,並呈現為一個整體。第一次修改位於下層的檔案時,該檔案會被複製到可寫入層,之後就使用複本(寫入時複製)。因此映像檔層不會改變,也不影響共用同一映像檔的其他容器。大型檔案的第一次複製需要時間,所以像資料庫資料這類頻繁寫入的內容要放在磁碟區(volume)中。

解析中的「Docker」

出現「Docker」的題目(6題)

  1. 在 Linux 主機上使用 Docker,從以與主機不同的發行版為基礎的映像檔啟動容器,並在其中執行 uname -r(顯示核心版次的指令)與 cat /etc/os-release(顯示發行版資訊的指令)。關於結果的說明,下列何者正確?
  2. 在從某映像檔啟動的容器內,修改了映像檔中所含的設定檔 /etc/app.conf。在 Docker 一般的儲存機制(overlay2 等)下發生的事,下列何者正確?
  3. 在上面的 Dockerfile 中,以 docker build 建置映像檔時執行的指令,與以 docker run 啟動容器時執行的指令,其組合下列何者正確?
  4. 以 docker run pinger example.com 啟動由上面的 Dockerfile 建置的映像檔 pinger。在容器內執行的指令為下列何者?
  5. 在 Docker 中,關於為了保留容器寫入的資料而使用的具名磁碟區(named volume)與繫結掛載(bind mount),下列何者正確?
  6. 指定 registry.example.com/team/web:1.4 來拉取(pull)映像檔。這個指定中各部分意義的組合,下列何者正確?

相關名詞

寫入時複製 JSON(JavaScript Object Notation) 引數 不可變基礎設施 可用區域 可觀測性 共同責任模型 自動擴展 物件儲存 金絲雀部署

前往名詞解釋列表