使用docker做鏡像后下載到本地 Docker鏡像和容器的區(qū)別詳解?
Docker鏡像和容器的區(qū)別詳解?當(dāng)您希望一個(gè)容器做兩件事,或者讓一個(gè)Docker映像包含來(lái)自兩個(gè)不同映像的依賴庫(kù)時(shí),您需要知道每個(gè)映像的Dockerfile。本文介紹了如何通過(guò)dockerhisto
Docker鏡像和容器的區(qū)別詳解?
當(dāng)您希望一個(gè)容器做兩件事,或者讓一個(gè)Docker映像包含來(lái)自兩個(gè)不同映像的依賴庫(kù)時(shí),您需要知道每個(gè)映像的Dockerfile。本文介紹了如何通過(guò)dockerhistory命令對(duì)Docker圖片進(jìn)行逆向工程,獲取它們的Docker文件,組織成一個(gè)Docker文件并進(jìn)行構(gòu)建,從而實(shí)現(xiàn)你想要做的事情。
常言道, "唐 不要多此一舉! "
使用Docker時(shí),在建立自己的鏡像之前,最好先在DockerHub中找一些可以直接使用的鏡像進(jìn)行練習(xí)。將軟件架構(gòu)分布到一系列容器中是非常有效的,每個(gè)容器只做一件事。構(gòu)建分布式應(yīng)用程序的最佳基礎(chǔ)是使用DockerHub的官方圖像,因?yàn)樗鼈兊馁|(zhì)量是可信的。
在某些情況下,您可能希望一個(gè)容器做兩件不同的事情。在其他情況下,您可能希望Docker映像包含來(lái)自兩個(gè)不同映像的依賴庫(kù)。如果每個(gè)圖像都有一個(gè)docker文件,這就非常簡(jiǎn)單了。將它們組織到Dockerfile文件中并構(gòu)建它們。
但是大部分時(shí)候都是使用DockerHub上準(zhǔn)備的圖片,不會(huì)有它們的源Dockerfile。我花時(shí)間找到了一個(gè)工具,可以合并(或展平)兩個(gè)不同的Docker圖像,而不需要它們的Docker文件。也就是說(shuō),尋找可以做到以下幾點(diǎn)的東西:
圖1 -
- gtmerged_image_12
/
圖2 -
之前在GitHub上有兩個(gè)相關(guān)的討論(1和2),雖然都是關(guān)閉的。
這可能嗎?
那么,有沒(méi)有一個(gè)工具可以做到這一點(diǎn):docker merge image 2 image2 merged _ image?
不要!
你可以 甚至不能用下面的方法構(gòu)建Dockerfile:
來(lái)自圖像1
來(lái)自圖像2
簡(jiǎn)而言之,一個(gè)Dockerfile文件中不能有多個(gè)基本映像。
但是我需要這個(gè)功能!
唯一的解決方案是獲取這些圖像的docker文件,然后將它們組織成一個(gè)文件并構(gòu)建它們。那么,我能在DockerHub上得到一個(gè)鏡像Dockerfile嗎?幸運(yùn)的是,你可以。它可以 不可離線獲取(原文在線,但顯然在線時(shí)可以直接從GitHub獲取),但可以使用dockerhistory命令通過(guò)逆向工程獲取。
怎么用?
在你的機(jī)器上使用dockerpull從Docke下載。RHub下載圖像。
dockerpullimage1
dockerpullimage2
然后使用dockerhistory獲取構(gòu)建兩個(gè)容器時(shí)運(yùn)行的命令。
docker history-no-trunctrueimaggtimage 1-docker file
docker history-no-trunctruegimage 2g timage 2-docker file
接下來(lái),打開(kāi)這兩個(gè)文件,您可以看到每個(gè)圖像的命令堆棧。這是因?yàn)镈ocker圖像是由層構(gòu)建的(閱讀更多)。也就是說(shuō),您在Dockerfile中鍵入的每個(gè)命令都會(huì)構(gòu)建一個(gè)新的映像,該映像位于前一個(gè)命令生成的映像之上。所以你可以對(duì)鏡像進(jìn)行逆向工程。
限制
唯一的情況是你可以 對(duì)映像進(jìn)行反向工程是指映像的維護(hù)者在docker文件中使用ADD或COPY命令。您將看到這樣一行:
addfil: 1 AC 56373 f 7983 caf 22
或者add dir : cf 6 F
如何將本地docker鏡像上傳到我的私有倉(cāng)庫(kù)?
Docker越來(lái)越受歡迎了。如果你的團(tuán)隊(duì)準(zhǔn)備開(kāi)始使用docker,那么私有倉(cāng)庫(kù)是必不可少的。第一,它可以幫助你加快從服務(wù)器拉映像的速度,第二,它可以幫助你。你不 我不想把圖像放在公共Docker注冊(cè)表上...在啟動(dòng)服務(wù)器之前,讓 s上傳Ubuntu云ima。