映像檔分層概念

把映像檔拆開,裡面是一層又一層的Layer,像堆疊積木一樣,堆疊而成。

容器則是在每個映像檔上面,再加上一個R/W層。

建立二個映像檔來比較看看。

映像檔cutejaneii/curl_alpine:3.7Dockerfile

映像檔cutejaneii/curl2_alpine:3.7Dockerfile

docker history觀察一下

映像檔alpine:3.7的ID是6d1ef012b567

映像檔curl_alpine:3.7是由3個Layer組成,最底下的ID是6d1ef012b567(也就是映像檔alpine:3.7),再往上每一個指令就多一個Layer

映像檔curl2_alpine:3.7是由4個Layer組成,最底下的ID是6d1ef012b567(也就是映像檔alpine:3.7),再往上每一個指令就多一個Layer

來看建置過程中有什麼不同

映像檔curl_alpine:3.7的建置過程:

映像檔curl2_alpine:3.7的建置過程:(因為已經存在RUN apk add --no-cache curl指令的Layer,所以在這裡直接使用,就不需再建置,節省很多時間)

以一張示意圖來看curl_alpine:3.7,就會是這個樣子

利用docker images -a查看映像檔的資訊

除了docker build之外,在docker pulldocker push時,都會略過已存在的Layer。也就是說,變動的部份在Dockerfile的愈下層,能夠共用的Layer愈多。

Last updated

Was this helpful?