映像檔分層概念
把映像檔拆開,裡面是一層又一層的Layer,像堆疊積木一樣,堆疊而成。
容器則是在每個映像檔上面,再加上一個R/W層。

建立二個映像檔來比較看看。
映像檔cutejaneii/curl_alpine:3.7的Dockerfile
cutejaneii/curl_alpine:3.7的Dockerfile映像檔cutejaneii/curl2_alpine:3.7的Dockerfile
cutejaneii/curl2_alpine:3.7的Dockerfile用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 pull及docker push時,都會略過已存在的Layer。也就是說,變動的部份在Dockerfile的愈下層,能夠共用的Layer愈多。
Last updated
Was this helpful?