1. 程式人生 > 實用技巧 >Docker:映象(映象原理)

Docker:映象(映象原理)

1、映象原理

(1)映象

映象是一種輕量級、可執行的獨立軟體包,用來打包軟體執行環境和基於執行環境開發的軟體,它包含執行某個軟體所需的所有內容,包括程式碼、執行時、庫、環境變數和配置檔案。

(2)聯合檔案系統

它支援對檔案系統的修改作為一次提交來一層層的疊加,同時可以將不同目錄掛載到同一個虛擬檔案系統下。Union檔案系統是Docker映象的基礎。映象可以通過分層來進行繼承,基於基礎映象(沒有父映象),可以製作各種具UnionFS(聯合檔案系統):Union檔案系統(UnionFS)是一種分層、輕量級並且高效能的檔案系統體的應用映象。

特點是一次同時載入多個檔案系統,但從外面看起來,只能看到一個檔案系統,聯合載入會把各層檔案系統疊加越來,這樣最終的檔案系統會包含所有底層的檔案和目錄

(3)bootfs與rootfs

bootfs(boot fle system)主要包含bootloader和kernel, bootloader主要是引導載入kernel.Linux剛啟動時會載入bootfs檔案系統,在Docker映象的最底層是bootfs。這一層與我們典型的LinuxUnix系統是一樣的,包含boot載入器和核心。當boot載入完成之後整個核心就都在記憶體中了,此時記憶體的使用權已由bootfs轉交給核心,此時系統也會解除安裝bootfs。
rootfs (root fle system),在boots之上。包含的就是典型Linux系統中的ldev,lproc,/bin, letc等標準目錄和檔案。rootfs就是各種不同的作業系統發行版,比如Ubuntu,Centos等等。

對於一個精簡的OS,roots可以很小,只需要包括最基本的命令、工具和程式庫就可以了,因為底層直接用Host的kernel,自己只需要提供roots就行了。由此可見對於不同的linux發行版, bootfs基本是一致的, rootts會有差別,因此不同的發行版可以公用bootfs。

tomcat映象要比windows系統上的映象大的原因是tomcat映象是由一層層地檔案打包後形成的精簡版的tomcat,這樣做的好處是能夠實現資源的共享,有多個映象都從相同的base映象構建而來,那麼宿主機只需在磁碟上儲存一份base映象,同時記憶體中也只需載入一份base映象,就可以為所有容器服務了。而且映象的每一層都可以被共享。

2、Docker映象的commit操作

(1)概念

提交容器副本使之成為一個新的映象

(2)如何啟動一個tomcat

[root@aubin ~]# docker run -it -p 8888:8080 tomcat:8.5.32
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /docker-java-home/jre

小p是可以指定埠對映,但是右邊的埠必須是8080,大P是隨機分配埠,但是他也是對映到8080

(3)commit

刪去tomcat的webapp目錄下的檔案然後提交會形成一個新的映象,這個映象映象是不會覆蓋原有的映象的