Docker鏡像的制作與使用淺析
分層下載,docker image 的核心: 聯(lián)合文件系統(tǒng)
鏡像是什么
鏡像就是一個(gè)輕量的、獨(dú)立的軟件包。用來(lái)打包運(yùn)行環(huán)境和基于運(yùn)行環(huán)境開(kāi)發(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è)新的可寫(xiě)層被加到鏡像的頂部。
這一層就是我們通常說(shuō)的容器層,容器之下的都叫鏡像層。

commit鏡像(提交一個(gè)自己的鏡像)
docker commit #提交容器成為一個(gè)新的副本 #命令和git原理類(lèi)似 docker commit -m='提交的描述信息' -a='作者' 容器id 目標(biāo)鏡像名:[ tag ]
下載的tomcat鏡像是閹割版,啟動(dòng)之后404,因?yàn)閣ebapps下面沒(méi)有ROOT文件夾,所以這里嘗試做一個(gè)自己的可正常訪(fǎng)問(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、瀏覽器訪(fǎng)問(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é)

到此這篇關(guān)于Docker鏡像的制作與使用淺析的文章就介紹到這了,更多相關(guān)Docker鏡像內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 查看docker鏡像中文件的方法
- Docker鏡像保存為文件及從文件導(dǎo)入鏡像的方法
- 詳解docker鏡像centos7配置Java運(yùn)行環(huán)境
- 谷歌技術(shù)人員解決Docker鏡像體積太大問(wèn)題的方法
- 簡(jiǎn)單談?wù)凞ocker鏡像的使用方法
- 兩種方式創(chuàng)建docker鏡像的啟動(dòng)容器時(shí)區(qū)別介紹(總結(jié)篇)
- docker鏡像無(wú)法刪除 Error:No such image:xxxxxx解決
- Jenkins打包微服務(wù)構(gòu)建Docker鏡像運(yùn)行的實(shí)現(xiàn)
- Docker鏡像上傳到阿里云的步驟詳解
相關(guān)文章
docker pure-ftp 搭建ftp服務(wù)器的方法
本篇文章主要介紹了docker pure-ftp 搭建ftp服務(wù)器的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
群暉NAS利用Docker容器搭建KMS激活服務(wù)器實(shí)現(xiàn)激活windows系統(tǒng)和office(操作步驟)
本文跟大家分享一下如何利用群暉NAS的Docker容器套件搭建KMS服務(wù)器,并演示如何利用我們自己的KMS服務(wù)器激活Windows操作系統(tǒng)與Microsoft Office,感興趣的朋友跟隨小編一起看看吧2021-05-05
docker swarm如何在指定的node上運(yùn)行指定的容器
這篇文章主要介紹了docker swarm如何在指定的node上運(yùn)行指定的容器,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
docker部署mysql8之PXC8.0分布式集群過(guò)程
這篇文章主要介紹了docker部署mysql8之PXC8.0分布式集群過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
ubuntu系統(tǒng)使用docker gitlab 磁盤(pán)空間滿(mǎn)的問(wèn)題及解決
這篇文章主要介紹了ubuntu系統(tǒng)使用docker gitlab 磁盤(pán)空間滿(mǎn)的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
關(guān)于docker啟動(dòng)jenkins環(huán)境的問(wèn)題
這篇文章主要介紹了docker啟動(dòng)jenkins環(huán)境的問(wèn)題,文中提到了jenkins基本工作原理及管理員密碼獲取方法,對(duì)docker啟動(dòng)jenkins環(huán)境相關(guān)知識(shí)感興趣的朋友一起看看吧2022-04-04
使用Docker-compose離線(xiàn)部署Django應(yīng)用的方法
這篇文章主要介紹了使用Docker-compose離線(xiàn)部署Django應(yīng)用的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-03-03

