docker 入門到實戰(四)docker鏡像

本篇來自於尚硅谷周陽老師 https://www.bilibili.com/vide...
上一篇: docker 入門到實戰(三)docker經常使用命令

四:docker鏡像

4.1 docker鏡像是什麼

描述:鏡像是一種輕量級、可執行的獨立軟件包,用來打包軟件運行環境和基於運行環境開發的軟件,它包含運行某個軟件所需的全部內容,包括代碼、運行時、庫、環境變量和配置文件。html

4.1.1 UnionFS(聯合文件系統)

UnionFS(聯合文件系統):Union文件系統(UnionFS)是一種分層、輕量級而且高性能的文件系統,它支持對文件系統的修改做爲一次提交來一層層的疊加,同時能夠將不一樣目錄掛載到同一個虛擬文件系統下(unite several directories into a single virtual filesystem)。Union 文件系統是 Docker 鏡像的基礎。鏡像能夠經過分層來進行繼承,基於基礎鏡像(沒有父鏡像),能夠製做各類具體的應用鏡像。linux

特性:一次同時加載多個文件系統,但從外面看起來,只能看到一個文件系統,聯合加載會把各層文件系統疊加起來,這樣最終的文件系統會包含全部底層的文件和目錄web

4.1.2  Docker鏡像加載原理

Docker鏡像加載原理:docker

   docker的鏡像實際上由一層一層的文件系統組成,這種層級的文件系統UnionFS。segmentfault

bootfs(boot file system)主要包含bootloader和kernel, bootloader主要是引導加載kernel, Linux剛啓動時會加載bootfs文件系統,在Docker鏡像的最底層是bootfs。這一層與咱們典型的Linux/Unix系統是同樣的,包含boot加載器和內核。當boot加載完成以後整個內核就都在內存中了,此時內存的使用權已由bootfs轉交給內核,此時系統也會卸載bootfs。
下載.png
對於一個精簡的OS,rootfs能夠很小,只須要包括最基本的命令、工具和程序庫就能夠了,由於底層直接用Host的kernel,本身只須要提供 rootfs 就好了。因而可知對於不一樣的linux發行版, bootfs基本是一致的, rootfs會有差異, 所以不一樣的發行版能夠公用bootfs。tomcat

4.1.3  分層的鏡像

以咱們的pull爲例,在下載的過程當中咱們能夠看到docker的鏡像好像是在一層一層的在下載
image.pngapp

4.1.4  爲何 Docker 鏡像要採用這種分層結構呢

最大的一個好處就是 - 共享資源webapp

好比:有多個鏡像都從相同的 base 鏡像構建而來,那麼宿主機只需在磁盤上保存一份base鏡像,同時內存中也只需加載一份 base 鏡像,就能夠爲全部容器服務了。並且鏡像的每一層均可以被共享。ide

4.2 docker鏡像特色

Docker鏡像都是隻讀的
當容器啓動時,一個新的可寫層被加載到鏡像的頂部。
這一層一般被稱做「容器層」,「容器層」之下的都叫「鏡像層」。工具

4.3 docker commit操做

docker commit提交容器副本使之成爲一個新的鏡像

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS說明:
-a :提交的鏡像做者;
-c :使用Dockerfile指令來建立鏡像;
-m :提交時的說明文字;
-p :在commit時,將容器暫停。

演示:

4.3.1 目前就三個鏡像:

image.png

4.3.2 啓動tomcat

image.png

image.png

4.3.3 添加一個主頁

在容器中webapps一個建立root文件夾
image.png

宿主機建立一個index.html
image.png

image.png

把主頁從宿主機拷貝到容器內 (更簡單的方法目錄掛載在下篇會有)
image.png

刷新頁面就能夠看到本身寫的主頁啦
吐槽一下阿里雲EDS 1M太慢了 刷新好久
image.png

4.3.4 提交修改的容器變成一個新的鏡像

image.png

4.3.5 根據新生成的鏡像發佈一個容器

image.png
image.png

下一篇

docker 入門到實戰(五)docker容器數據卷

相關文章
相關標籤/搜索