docker 核心概念整理
一、鏡像(Image) vs Dockerfile
1、docker在鏡像(image)中運(yùn)行你的代碼,而不是Dockerfile,鏡像文件就是從Dockerfile編譯而得到的不透明資產(chǎn)
2、dockerfile是通過docker build命令來編譯鏡像的配置文件,當(dāng)你用docker push命令發(fā)布自己的鏡像的時(shí)候,你發(fā)布的不是任何你的代碼,而是由你的代碼編譯出來的鏡像文件
二、注冊(cè)表(Registry) vs 索引(Index)
注冊(cè)表(鏡像注冊(cè)表,registry)和索引(鏡像索引,index)這兩個(gè)概念,以及它們的區(qū)別也很特殊。
一個(gè)索引用來管理用戶賬號(hào),權(quán)限,搜索,打標(biāo)簽,以及其它可以方便的通過Web界面來完成的工作。
一個(gè)注冊(cè)表則是真正的用來保存、提供鏡像文件的概念。它通過索引來完成用戶認(rèn)證步驟。
當(dāng)你執(zhí)行docker search命令的時(shí)候,Docker會(huì)到index里執(zhí)行查找工作,而不是registry。從實(shí)際上來說,Docker會(huì)在索引(index)所知道的多個(gè)注冊(cè)表(registry)中進(jìn)行查找。
而當(dāng)你執(zhí)行docker push 或者 docker pull操作的時(shí)候,index會(huì)判斷你是否有權(quán)限訪問或者修改該鏡像文件,如果通過index的認(rèn)證操作的話,registry則進(jìn)行實(shí)際的鏡像存儲(chǔ)工作或者將鏡像文件發(fā)送給請(qǐng)求端。同樣,index會(huì)知道你想訪問的鏡像的存儲(chǔ)位置(哪個(gè)registry上),然后將訪問請(qǐng)求轉(zhuǎn)向到相應(yīng)的registry。
三、鏡像倉(cāng)庫(kù)(Repository )
Docker 使用類似于Github或者其他SCM工具的倉(cāng)庫(kù)概念。當(dāng)然,它們也不完全等價(jià)。
實(shí)際上,這是一個(gè)問題,因?yàn)殓R像倉(cāng)庫(kù)是所有這些概念的合集,而不是單獨(dú)的任何一個(gè)
四、docker image本機(jī)上的本地存儲(chǔ)位置
docker images命令顯示的內(nèi)容都是本機(jī)上存在的資源,那我這些資源到底會(huì)在哪里呢,那我們來看看/var/lib/docker這個(gè)文件夾下的內(nèi)容:
[root@docker docker]# cd /var/lib/docker/
[root@docker docker]# ll repositories*
-rw——- 1 root root 1047 Sep 21 10:22 repositories-aufs
-rw——- 1 root root 1050 Sep 25 01:37 repositories-devicemapper
我們可以看到在該目錄下有兩個(gè)文件
cat repositories-devicemapper | python -mjson.tool
cat repositories-aufs | python -mjson.tool
其實(shí)兩個(gè)文件都保存著鏡像的信息。如果仔細(xì)辨認(rèn),你會(huì)發(fā)現(xiàn):
repositories-devicemapper里面保存的是當(dāng)前存在的本地鏡像的信息 你每pull一個(gè)鏡像下來,里面就會(huì)增加一段信息,例如這樣:"192.168.0.216:5000/httpd": {"latest": "35972236645ab46a8cc3ff24fc39ed43e259134de5ff1a3216726eab3e2827c2"},repositories-aufs文件中保存的則是鏡像倉(cāng)庫(kù)的信息。你會(huì)發(fā)現(xiàn)/var/lib/docker下面還有一個(gè)文件夾graph
那我們來看看/var/lib/docker/graph下面有什么東西!
ls -l /var/lib/docker/graph/
下面有許許多多的文件夾,沒錯(cuò),那就是Images ID,并且是你曾經(jīng)使用過的Images ID信息,還有l(wèi)ayer,也許你在pull images的時(shí)候會(huì)發(fā)現(xiàn),它在期間download layer。
drwx------ 2 root root 4096 Sep 21 11:43 f912d1b83a6c5f0d6409083fed731e5963aeb05ff2832f5e4899929f99ed86a1 drwx------ 2 root root 4096 Sep 15 09:03 f94304dc94e325bb13db375898780bec04fc83362381d6b8476ab288287e5d9a drwx------ 2 root root 4096 Sep 15 08:59 f972ade4c9d5f9863b782ee685c8ec80da9bdb8e43834919214dd68d501687f0 drwx------ 2 root root 4096 Sep 21 12:04 f9a8cbc8dd13fb5bdbcff050cbeee76cc8c967a9ab2122714d00090c5815d385 drwx------ 2 root root 4096 Sep 15 09:47 f9bff7d0d06e65f89dce91e43caefc3fe090818bae24d67c9732bd4a7ada19dc drwx------ 2 root root 4096 Sep 15 09:00 fe0e725486e9d7c95ff25b7ae77801187f60fb29aa15e916d5364485e94b3f18 drwx------ 2 root root 4096 Sep 15 09:47 ff0618bc0767411abb6b6f28200a67614fea418483f3faa5d649d92b53627e43我們進(jìn)入其中一個(gè)Images ID 文件夾里面
cd a68ca3ab3814f42c708499ff9ced589f465239912d3b27eea0bd04a9785dccfa/
ls
json layersize
里面有兩個(gè)文件,json and layersize。那么這個(gè)json呢,就是當(dāng)前Images的詳細(xì)信息,而這個(gè)layersize呢,是一個(gè)整數(shù),表示layer的大小。
總結(jié)
以上是生活随笔為你收集整理的docker 核心概念整理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 地图与位置服务笔记
- 下一篇: android 之 ListView 里