Docker鏡像超詳細介紹
本文我們詳細給大家來介紹下docker中的鏡像.
1. 鏡像是什么?
首先我們來看看鏡像到底是什么?雖然前面有介紹過鏡像和容器
,但也不是特別的深入。
鏡像是一種輕量級、可執行的獨立軟件包,用來打包軟件運行環境和基于運行環境開發的軟件,它包含運行某個軟件所需的所有內容,包括代碼、運行時、庫、環境變量和配置文件。
1.1 UnionFS
UnionFS(聯合文件系統): Union文件系統(UnionFS)是一種分層、輕量級并且高性能的文件系統,它支持對文件系統的修改作為一次提交來一層層的疊加,同時可以將不同目錄掛載到同一個虛擬文件系統下(unite several directories into a single virtual filesystem)。Union 文件系統是 Docker 鏡像的基礎。鏡像可以通過分層來進行繼承,基于基礎鏡像(沒有父鏡像),可以制作各種具體的應用鏡像。
特性:一次同時加載多個文件系統,但從外面看起來,只能看到一個文件系統,聯合加載會把各層文件系統疊加起來,這樣最終的文件系統會包含所有底層的文件和目錄
1.2 鏡像加載原理
Docker鏡像加載原理:
docker的鏡像實際上由一層一層的文件系統組成,這種層級的文件系統UnionFS。
bootfs(boot file system)主要包含bootloader和kernel, bootloader主要是引導加載kernel, Linux剛啟動時會加載bootfs文件系統,在Docker鏡像的最底層是bootfs。這一層與我們典型的Linux/Unix系統是一樣的,包含boot加載器和內核。當boot加載完成之后整個內核就都在內存中了,此時內存的使用權已由bootfs轉交給內核,此時系統也會卸載bootfs。
rootfs (root file system) ,在bootfs之上。包含的就是典型 Linux 系統中的 /dev, /proc, /bin, /etc 等標準目錄和文件。rootfs就是各種不同的操作系統發行版,比如Ubuntu,Centos等等。
1.3 分層的鏡像
其實我們前面在 pull 文件的時候比如 tomcat,在pull界面我們就可以看到下載的文件是一層層的。
1.4 分層結構的特點
其實我們也會考慮docker為什么會才用這種分層的結果,它有什么好處呢?最大的一個好處就是共享資源
比如:有多個鏡像都從相同的 base 鏡像構建而來,那么宿主機只需在磁盤上保存一份base鏡像,同時內存中也只需加載一份 base 鏡像,就可以為所有容器服務了。而且鏡像的每一層都可以被共享。
2. 鏡像的特點
大家需要注意,docker鏡像都是只讀的,當容器啟動時,一個新的可寫層被加載到鏡像的頂部,這一層通常被稱為容器層,容器層之下的都叫鏡像層。
3. 鏡像的操作
我們現在已經掌握了從docker hub上獲取相關鏡像,然后運行容器,并作出我們自己的處理,但有時候我們需要將我們自己的容器制作為對應的鏡像,以便后面繼續使用,這時我們就需要用到docker commit ...命令了,這節我們就通過案例來介紹下 docker commit ...命令的使用
1
操作案例
我們通過tomcat鏡像來創建容器后操作處理,然后將容器制作為新的鏡像然后我們通過新的鏡像來制作容器來演示這個效果,有點繞,我們直接通過案例來說。
3.1 下載tomcat鏡像
docker pull tomcat
1
創建tomcat容器并運行
docker run -it -p 8888:8080 tomcat
1
參數說明
訪問服務
3.2 刪除doc
這時我們可以在tomcat中部署一個簡單的服務,如下:
docker exec -it dae1df9c2b7c /bin/bash
1
刪除doc服務
再訪問
3.3 創建信息的鏡像
接下來我們就可以把正在運行的容器制作為一個新的鏡像了,
docker commit -a="bobo" -m="delete tomcat docs file" dae1df9c2b7c bobo/tomcat:1.666
1
3.4 啟動新的鏡像
現在我們可以啟動我們自己制作的鏡像來訪問了。
docker run -it -p 8899:8080 bobo/tomcat:1.666
1
最后我們在啟動tomcat服務的時候我們可以通過 守護式會更好些,如下
好了~鏡像相關的內容就介紹到此,歡迎大家關注哦 O(∩_∩)O哈哈~
Docker 容器 鏡像服務
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。