对Docker镜像layer的理解
對Docker鏡像layer的理解
轉(zhuǎn)自:https://blog.csdn.net/u011069294/article/details/105583522
FROM python:3.6.1-alpine RUN pip install flask CMD [“python”,“app.py”] COPY app.py /app.py上面是一個Dockerfile的例子,每一行都會生成一個新的layer。 每一個層是上一層的增量或者是一些改變。
除了最上面的layer,鏡像的每一層都是只讀的。最上面的layer是為container創(chuàng)建的,是可讀可寫的,用來實(shí)現(xiàn)“copy-on-write",意思就是僅當(dāng)對一些位于只讀層的文件需要被編輯時,存儲在較低layer層中的文件就會被拉到讀/寫容器層(最上面的一層),然后將那些更改存儲在容器層中。
可以使用 docker diff [container id] 查看哪些文件被拉到了容器層。參考文檔:https://docs.docker.com/engine/reference/commandline/diff/
由于有些layer層是只讀的,因此這些只讀的layer可以被image和運(yùn)行容器共享。 例如,使用自己的Dockerfile創(chuàng)建具有相似基礎(chǔ)層的新Python應(yīng)用程序,將共享與第一個Python應(yīng)用程序相同的所有層。
從同一 image 啟動多個容器時,也可以看到layer層共享。 因?yàn)槿萜魇褂孟嗤闹蛔x層,所以可以想象啟動容器非常快,并且在主機(jī)上的占用空間非常小。
對于Dockerfile中重復(fù)的部分的利用
可以將兩個Dockerfile的公共代碼放到一個基本Dockerfile中,然后在子Dockerfile使用FROM命令來使用公共的父Dockerfile。
總結(jié)
以上是生活随笔為你收集整理的对Docker镜像layer的理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 红箭-20/50新型反坦
- 下一篇: 攻防世界web新手区解题 /cooki