1. 概述
鏡像是一種輕量級、可自行的獨立軟體包,用來打包軟體運行環境和基于運行環境快發的軟體,它包含運行某個軟體所需的所有內容,包括代碼、運行時、庫、環境變數和組態檔,
1.1 UnionFS(聯合檔案系統)
是一種分層、輕量級并且高性能的檔案系統,它支持對檔案系統的修改作為一次提交來一層層的疊加,同時可以將不同目錄掛載到同一個虛擬檔案系統下,Union檔案系統是Docker鏡像的基礎,鏡像可以通過分層來進行繼承,基于基礎鏡像(沒有父鏡像),可以制作各種具體的應用鏡像,
特性:一次同時加載多個檔案系統,但從外面看起來,只能看到一個檔案系統,聯合加載會把各層檔案系統疊加起來,這樣最終的檔案系統會包含所有底層的檔案和目錄
1.2 Docker鏡像加載原理
docker鏡像實際上由一層層的檔案系統組成,這種層級的檔案系統UnionFS,
bootfs主要包含bootloader和kernel,BootLoader主要是引導加載kernel,Linux剛啟動時會加載bootfs檔案系統,在Docker鏡像的最底層是bootfs,這一層與典型的linux/unix系統是一樣的,包含boot加載器和內核,當boot加載完成之后整個內核就都在記憶體中了,此時記憶體的使用權已由bootfs轉交給內核,此時系統也會卸載bootfs,
rootfs,在bootfs之上,包含的就是典型的Linux系統中的/dev、/proc、/bin、/etc等標準目錄和檔案,rootfs就是各種不同作業系統發行版,比如Ubuntu,Centos等等,
1.3 docker鏡像commit操作
docker commit提交容器副本使之成為一個新的鏡像
語法:
docker commit -m="提交的描述資訊" -a="作者" 容器ID 要創建目標鏡像名:[標簽名]
案例演示:
1)從Hub上下載Tomcat鏡像到本地并成功運行
docker pull tomcat

以互動方式運行
### 以互動式的方式啟動Tomcat,本機埠8888映射Tomcat埠8080
docker run -it -p 8888:8080 tomcat
注意;這里的引數是小寫的p,表示指定埠,如果改成大P,就表示隨機埠
如圖:

訪問:

1.3.1 解決404問題
1)先關閉防火墻
service firewalld stop
2)進入Tomcat容器
docker exec -it 0820a84543da /bin/bash
3)查看目錄
ls -l

4)查看webapps目錄,發現其是空的,在查看webapps.dist發現其有內容
因此,將webapps目錄洗掉,將webapps.dist改成webapps

再次訪問,成功的訪問到了Tomcat

2)故意洗掉上一步的鏡像生產Tomcat容器的檔案
2.1 進入Tomcat容器
docker exec -it bd98b373d138 /bin/bash

2)進入webapps目錄,洗掉doc檔案夾

3)再次訪問Tomcat的doc,報錯,如圖:

3)以洗掉了docs目錄的Tomcat為模板,commit一個沒有doc的Tomcat新鏡像tomcat02
docker commit -a="zoudm" -m="del tomcat docs" bd98b373d138 bjc/tomcat02:1.2
執行結果如圖:

最后查詢鏡像,發現鏡像串列存在剛才提交的鏡像,如圖:

4)啟動新鏡像并和原來的對比
docker run -it -p 9999:8080 bjc/tomcat02:1.2

訪問新容器的Tomcat,可以訪問,但是,訪問其docs報錯,如圖:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/278970.html
標籤:其他
