本篇來自於尚硅谷周陽老師 https://www.bilibili.com/vide...
上一篇: docker 入門到實戰(三)docker經常使用命令
描述:鏡像是一種輕量級、可執行的獨立軟件包,用來打包軟件運行環境和基於運行環境開發的軟件,它包含運行某個軟件所需的全部內容,包括代碼、運行時、庫、環境變量和配置文件。html
UnionFS(聯合文件系統):Union文件系統(UnionFS)是一種分層、輕量級而且高性能的文件系統,它支持對文件系統的修改做爲一次提交來一層層的疊加,同時能夠將不一樣目錄掛載到同一個虛擬文件系統下(unite several directories into a single virtual filesystem)。Union 文件系統是 Docker 鏡像的基礎。鏡像能夠經過分層來進行繼承,基於基礎鏡像(沒有父鏡像),能夠製做各類具體的應用鏡像。linux
特性:一次同時加載多個文件系統,但從外面看起來,只能看到一個文件系統,聯合加載會把各層文件系統疊加起來,這樣最終的文件系統會包含全部底層的文件和目錄web
Docker鏡像加載原理:docker
docker的鏡像實際上由一層一層的文件系統組成,這種層級的文件系統UnionFS。segmentfault
bootfs(boot file system)主要包含bootloader和kernel, bootloader主要是引導加載kernel, Linux剛啓動時會加載bootfs文件系統,在Docker鏡像的最底層是bootfs。這一層與咱們典型的Linux/Unix系統是同樣的,包含boot加載器和內核。當boot加載完成以後整個內核就都在內存中了,此時內存的使用權已由bootfs轉交給內核,此時系統也會卸載bootfs。
對於一個精簡的OS,rootfs能夠很小,只須要包括最基本的命令、工具和程序庫就能夠了,由於底層直接用Host的kernel,本身只須要提供 rootfs 就好了。因而可知對於不一樣的linux發行版, bootfs基本是一致的, rootfs會有差異, 所以不一樣的發行版能夠公用bootfs。tomcat
以咱們的pull爲例,在下載的過程當中咱們能夠看到docker的鏡像好像是在一層一層的在下載
app
最大的一個好處就是 - 共享資源webapp
好比:有多個鏡像都從相同的 base 鏡像構建而來,那麼宿主機只需在磁盤上保存一份base鏡像,同時內存中也只需加載一份 base 鏡像,就能夠爲全部容器服務了。並且鏡像的每一層均可以被共享。ide
Docker鏡像都是隻讀的
當容器啓動時,一個新的可寫層被加載到鏡像的頂部。
這一層一般被稱做「容器層」,「容器層」之下的都叫「鏡像層」。工具
docker commit提交容器副本使之成爲一個新的鏡像
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS說明: -a :提交的鏡像做者; -c :使用Dockerfile指令來建立鏡像; -m :提交時的說明文字; -p :在commit時,將容器暫停。
演示:
在容器中webapps一個建立root文件夾
宿主機建立一個index.html
把主頁從宿主機拷貝到容器內 (更簡單的方法目錄掛載在下篇會有)
刷新頁面就能夠看到本身寫的主頁啦
吐槽一下阿里雲EDS 1M太慢了 刷新好久
下一篇