iT邦幫忙

2023 iThome 鐵人賽

DAY 18
0

前言

昨天我們已經對映像檔以及映像層之間的關係,更加熟悉了,今天我們要來拉大視野一探映像層、映像檔到容器,這三者之間的神秘又糾纏的關係。

映像檔裡的映像層

現在大家都知道了,映像檔是由一層一層的映像層堆疊而成。

所以昨天提到 httpd 的映像層有 4ee097f9a36694662ba12854595a05b7c0ad03682c916abd7e88a38e211a

-----------------
|     httpd     | 
|               |
|  4ee097f9a366 |
|  94662ba12854 |
|  595a05b7c0ad |
|  03682c916abd |
|  7e88a38e211a |
|               |
-----------------

所有的映像層都是唯讀的,不可編輯變動的。

當映像檔建立容器時

當我今天用 httpd 建立一個容器時,Docker 做得事情是將映像檔裡的映像層拉出來以供容器使用,因此這些映像層又稱為映像檔的共享層。這就是為什麼可以不斷產生容器。

此外,在第 14 天提到,Docker 會自動給容器一個可寫層。

這時,這個容器就會有映像層 + 可寫層,一個來自映像檔,一個來自Docker。

-----------------
|     容器一     | 
|---------------|
|     寫入層     |
|---------------|
|     映像層     |
|  4ee097f9a366 |
|  94662ba12854 |
|  595a05b7c0ad |
|  03682c916abd |
|  7e88a38e211a |
-----------------

如果在建立容器時有綁定掛載的話:

-----------------
|     容器一     | 
|---------------|
|     寫入層     |
|---------------|
|    約定掛載    |
|---------------|
|     映像層     |
|  4ee097f9a366 |
|  94662ba12854 |
|  595a05b7c0ad |
|  03682c916abd |
|  7e88a38e211a |
-----------------

那如果有 volume 掛載:

-----------------
|     容器一     | 
|---------------|
|     寫入層     |
|---------------|
|    約定掛載    |
|---------------|
|  volume 掛載   |
|---------------|
|     映像層     |
|  4ee097f9a366 |
|  94662ba12854 |
|  595a05b7c0ad |
|  03682c916abd |
|  7e88a38e211a |
-----------------

這些容器的結構圖,就是容器的檔案系統的結構,由映像層、寫入層、掛載所組成。

在 Day 13 提到,最基本的檔案系統是映像層與寫入層構成。那最完整的就是再加上掛載。

那映像層跟寫入層都是透過建立容器時所取得的元件,所以理當隨容器被刪除後跟著消失。

掛載則是透過本機的資料夾,或是 Docker 另外 create 出來的 volume,因此不像映像層跟寫入層一樣,會跟著容器的生命週期一起不見。

結論

今天我們貫穿了映像層、映像檔到容器,彼此之間的關係,且一併回顧之前提到卻有點模糊的概念,透過今天這樣從微觀到宏觀的介紹方式,讓大家明白這三者之間到底是什麼樣的存在,彼此又是誰的彼此。

明天我們來動手實作映像檔的指令操作吧!


上一篇
Day 17: 這樣看映像層
下一篇
Day 19: 映像檔的指令
系列文
淺嚐 Docker:新手莫慌、漫乘鯨魚30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言