網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
分層下載,docker image
的核心: 聯(lián)合文件系統(tǒng)
鏡像是什么
鏡像就是一個(gè)輕量的、獨(dú)立的軟件包。用來(lái)打包運(yùn)行環(huán)境和基于運(yùn)行環(huán)境開發(fā)的軟件。它包含軟件運(yùn)行所需的所有內(nèi)容(包括代碼、運(yùn)行時(shí)、庫(kù)、環(huán)境變量、配置文件)
所有的應(yīng)用,打包docker鏡像,就可以跑起來(lái)。
如何得到鏡像
- 從遠(yuǎn)程倉(cāng)庫(kù)下載
- 拷貝他人的鏡像(鏡像打包生成tar壓縮包,可以發(fā)送壓縮包給別人。)
- 自己制作一個(gè)鏡像(
DockerFile
)
Docker鏡像加載原理
UnionFS(聯(lián)合文件系統(tǒng))
UnionFS
(聯(lián)合文件系統(tǒng))是一種分層、輕量、高性能的文件系統(tǒng)。它支持對(duì)文件系統(tǒng)的修改作為一次提交,來(lái)一層一層的疊加,同時(shí)可以將不同目錄掛載到同一個(gè)虛擬文件系統(tǒng)下。
聯(lián)合文件系統(tǒng)是Docker
鏡像的基礎(chǔ),鏡像可以通過(guò)分層來(lái)進(jìn)行繼承,基于基礎(chǔ)鏡像(沒(méi)有父鏡像)可以制作各種具體的應(yīng)用鏡像。
特性:
一次同時(shí)加載多個(gè)文件系統(tǒng),但從外面看起來(lái),只能看到一個(gè)文件系統(tǒng),聯(lián)合加載會(huì)把各層文件系統(tǒng)疊加起來(lái),這樣最終的文件系統(tǒng)會(huì)包含所有底層的文件和目錄。
Docker鏡像加載原理:
Docker
的鏡像實(shí)際上由一層一層的文件系統(tǒng)組成,
bootfs(boot file syatem) rootfs(root file system),
就是各種操作系統(tǒng)的發(fā)行版,比如Ubuntu
,Centos
分層理解
查看鏡像詳細(xì)信息
docker inspect 鏡像id
Layers
特點(diǎn):
docker鏡像都是只讀的,當(dāng)容器啟動(dòng)時(shí),一個(gè)新的可寫層被加到鏡像的頂部。
這一層就是我們通常說(shuō)的容器層,容器之下的都叫鏡像層。
commit鏡像(提交一個(gè)自己的鏡像)
docker commit #提交容器成為一個(gè)新的副本 #命令和git原理類似 docker commit -m='提交的描述信息' -a='作者' 容器id 目標(biāo)鏡像名:[ tag ]
下載的tomcat鏡像是閹割版,啟動(dòng)之后404,因?yàn)閣ebapps下面沒(méi)有ROOT文件夾,所以這里嘗試做一個(gè)自己的可正常訪問(wèn)tomcat主頁(yè)的鏡像。(由于鏡像只讀,啟動(dòng)鏡像之后會(huì)在鏡像層之上生成一個(gè)容器層,在tomcat容器層做修改,再把鏡像層和修改過(guò)后的容器層整體打包成一個(gè)新的個(gè)人鏡像)
1、下載tomcat鏡像
docker pull tomcat
2、啟動(dòng)tomcat鏡像
docker run -it -p 3355:8080 tomcat /bin/bash
3、瀏覽器訪問(wèn)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]
總結(jié)
原文鏈接:https://www.cnblogs.com/all-smile/p/16768226.html
相關(guān)推薦
- 2022-09-22 get方法和post方法的區(qū)別
- 2022-04-25 Entity?Framework?Core實(shí)現(xiàn)軟刪除與查詢過(guò)濾器_實(shí)用技巧
- 2022-05-06 linux/mac上如何查看公網(wǎng)ip
- 2022-04-04 scrapy框架中用ssh連接遠(yuǎn)程服務(wù)器的實(shí)現(xiàn)_python
- 2022-07-11 Android實(shí)現(xiàn)單選按鈕_Android
- 2022-08-15 BufferedInputStream與FileInputStream的區(qū)別
- 2023-11-18 數(shù)據(jù)處理使用Python提取String、字符串中的數(shù)字
- 2022-05-28 C++?超詳細(xì)講解stack與queue的使用_C 語(yǔ)言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支