Docker镜像讲解
此篇為Docker筆記,文章可能存在疏忽,建議直接觀看原視頻。
視頻地址:https://www.bilibili.com/video/BV1og4y1q7M4?spm_id_from=333.999.0.0
參考:https://blog.csdn.net/11b202/article/details/21389067
Docker鏡像講解
鏡像是什么
鏡像是一種輕量級、可執(zhí)行的獨(dú)立軟件包,用來打包軟件運(yùn)行環(huán)境和基于運(yùn)行環(huán)境開發(fā)的軟件,它包含運(yùn)行某個(gè)軟件所需的所有內(nèi)容:代碼、庫、環(huán)境變量、配置文件等。
所有應(yīng)用,直接打包成Docker鏡像,就可以直接跑起來。
Docker鏡像加載原理
-
UnionFS (聯(lián)合文件系統(tǒng))
UnionFS是一種分層、輕量級并且高性能的文件系統(tǒng),它支持對文件系統(tǒng)的修改作為一次提交來一層層的疊加,同時(shí)可以將不同目錄掛載到同一個(gè)虛擬文件系統(tǒng)下。UnionFS是Docker鏡像的基礎(chǔ),鏡像可以通過分層來進(jìn)行繼承,基于基礎(chǔ)鏡像,可以制作各種具體的應(yīng)用鏡像。(不同 Docker 容器就可以共享一些基礎(chǔ)的文件系統(tǒng)層,同時(shí)再加上自己獨(dú)有的改動層,大大提高了存儲的效率。)
特性:一次同時(shí)加載多個(gè)文件系統(tǒng),但從外面看來,只能看到一個(gè)文件系統(tǒng),聯(lián)合加載會把各層文件系統(tǒng)疊加起來,這樣最終文件系統(tǒng)會包含所有底層的文件和目錄。
-
分層原理 (來自 https://blog.csdn.net/11b202/article/details/21389067)
Docker的文件系統(tǒng)分為兩層:bootfs和rootfs;
bootfs主要包含boostloader和kernel,bootloader主要引導(dǎo)加載kernel,Linux剛啟動時(shí)會加載bootfs,在內(nèi)核啟動之后,bootfs實(shí)際上會unmount掉。用戶不能對這層做任何修改。
對于Linux上不同版本的問題,docker可以同時(shí)運(yùn)行多個(gè)rootfs。
Docker的文件系統(tǒng)是分層的,它的rootfs在mount之后會轉(zhuǎn)為只讀模式。 Docker在它上面添加一個(gè)新的文件系統(tǒng),來達(dá)成它的只讀。事實(shí)上,從下圖中,我們能看到多個(gè)只讀的文件系統(tǒng),Docker中把他們稱為 層。image是只讀的,container部分則是可寫的。如果用戶想要修改底層只讀層上的文件,這個(gè)文件就會被先拷貝到上層,修改后駐留在上層,并屏蔽原有的下層文件。
commit鏡像
# docker commit 提交容器成為一個(gè)新的副本 # docker commit -m="描述信息" -a="作者" 容器id 目標(biāo)鏡像名:[TAG] $ docker commit -a="zhucz" -m="copy webapps.dist to webapps" 739702468c62 tomcat02:1.0 sha256:9a26e1374d18728160cd009f744002aa39788bcb141f2bea4b935f270cd0fbbb $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE tomcat02 1.0 9a26e1374d18 12 seconds ago 684MB tomcat 9.0 86783bb5af6c 4 days ago 680MB總結(jié)
以上是生活随笔為你收集整理的Docker镜像讲解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Docker基本组成 和 基本命令
- 下一篇: DDIA笔记—第六章 数据分区