目錄
- 鏡像是什么
- 如何得到鏡像
- Docker鏡像加載原理
- UnionFS(聯(lián)合文件系統(tǒng))
- 特性:
- Docker鏡像加載原理:
- 分層理解
- 特點:
- commit鏡像(提交一個自己的鏡像)
- 總結(jié)
分層下載,docker image
的核心: 聯(lián)合文件系統(tǒng)
鏡像是什么
鏡像就是一個輕量的、獨立的軟件包。用來打包運行環(huán)境和基于運行環(huán)境開發(fā)的軟件。它包含軟件運行所需的所有內(nèi)容(包括代碼、運行時、庫、環(huán)境變量、配置文件)
所有的應(yīng)用,打包docker鏡像,就可以跑起來。
如何得到鏡像
- 從遠(yuǎn)程倉庫下載
- 拷貝他人的鏡像(鏡像打包生成tar壓縮包,可以發(fā)送壓縮包給別人。)
- 自己制作一個鏡像(
DockerFile
)
Docker鏡像加載原理
UnionFS(聯(lián)合文件系統(tǒng))
UnionFS
(聯(lián)合文件系統(tǒng))是一種分層、輕量、高性能的文件系統(tǒng)。它支持對文件系統(tǒng)的修改作為一次提交,來一層一層的疊加,同時可以將不同目錄掛載到同一個虛擬文件系統(tǒng)下。
聯(lián)合文件系統(tǒng)是Docker
鏡像的基礎(chǔ),鏡像可以通過分層來進(jìn)行繼承,基于基礎(chǔ)鏡像(沒有父鏡像)可以制作各種具體的應(yīng)用鏡像。
特性:
一次同時加載多個文件系統(tǒng),但從外面看起來,只能看到一個文件系統(tǒng),聯(lián)合加載會把各層文件系統(tǒng)疊加起來,這樣最終的文件系統(tǒng)會包含所有底層的文件和目錄。
Docker鏡像加載原理:
Docker
的鏡像實際上由一層一層的文件系統(tǒng)組成,
bootfs(boot file syatem) rootfs(root file system),
就是各種操作系統(tǒng)的發(fā)行版,比如Ubuntu
,Centos
分層理解
查看鏡像詳細(xì)信息
docker inspect 鏡像id
Layers
特點:
docker鏡像都是只讀的,當(dāng)容器啟動時,一個新的可寫層被加到鏡像的頂部。
這一層就是我們通常說的容器層,容器之下的都叫鏡像層。
commit鏡像(提交一個自己的鏡像)
docker commit #提交容器成為一個新的副本 #命令和git原理類似 docker commit -m='提交的描述信息' -a='作者' 容器id 目標(biāo)鏡像名:[ tag ]
下載的tomcat鏡像是閹割版,啟動之后404,因為webapps下面沒有ROOT文件夾,所以這里嘗試做一個自己的可正常訪問tomcat主頁的鏡像。(由于鏡像只讀,啟動鏡像之后會在鏡像層之上生成一個容器層,在tomcat容器層做修改,再把鏡像層和修改過后的容器層整體打包成一個新的個人鏡像)
1、下載tomcat鏡像
docker pull tomcat
2、啟動tomcat鏡像
docker run -it -p 3355:8080 tomcat /bin/bash
3、瀏覽器訪問404 4、進(jìn)入容器,復(fù)制webapps.dist目錄下的文件到webapps目錄下 5、提交鏡像
docker commit -m="edit webapps dir" -a="xiao" 容器id tomcat02:1.0
6、查看提交的鏡像信息
docker inspect [imageId]