docker鏡像消失的問(wèn)題及臨時(shí)解決方案
場(chǎng)景:
想要在服務(wù)器上load一個(gè)鏡像,用于使用Dockerfile 進(jìn)行其他服務(wù)鏡像的打包。
問(wèn)題描述
在docker load 了一個(gè)鏡像,結(jié)果過(guò)了一會(huì),鏡像自己消失了。就是鏡像自動(dòng)消失了。
我這里load的是一個(gè)openjdk 的鏡像,
使用以下命令進(jìn)行的load
# gunzip -c openjre.tar.gz | docker load
完成后,通過(guò)查詢,可以看到該鏡像是存在的
# docker images |grep openjdk
這時(shí)候立馬通過(guò)Dockerfile docker build -t 對(duì)我想要打鏡像的服務(wù)進(jìn)行打鏡像包。也是可以打出對(duì)應(yīng)的鏡像的。
后續(xù)過(guò)了一會(huì)就好發(fā)現(xiàn)load進(jìn)來(lái)的openjdk 鏡像沒(méi)了。新打的鏡像也消失了。
原因分析:
我這里是通過(guò)度娘查到的原因,給出的大概幾個(gè)原因:
1. 磁盤(pán)空間管理:當(dāng)主機(jī)磁盤(pán)空間不足時(shí),Docker守護(hù)進(jìn)程可能會(huì)根據(jù)其內(nèi)部的垃圾回收策略自動(dòng)刪除不再使用的鏡像以釋放空間。這通常會(huì)影響到那些沒(méi)有被任何容器引用的鏡像。
2. 手動(dòng)或自動(dòng)清理:用戶或系統(tǒng)管理員可能執(zhí)行了docker system prune、docker image
prune等命令來(lái)清理未使用的鏡像,這些命令會(huì)刪除所有 dangling(孤立)鏡像或者按照指定條件篩選出不再需要的鏡像并進(jìn)行刪除。
3.倉(cāng)庫(kù)問(wèn)題:如果鏡像是從遠(yuǎn)程倉(cāng)庫(kù)(如 Docker Hub或私有倉(cāng)庫(kù))拉取的,并且后來(lái)該倉(cāng)庫(kù)中的鏡像被刪除或者因?yàn)榫W(wǎng)絡(luò)原因?qū)е聼o(wú)法訪問(wèn),則在本地通過(guò)標(biāo)簽引用的鏡像可能無(wú)法正常pull和使用,看起來(lái)像是消失了。
4. 配置錯(cuò)誤或軟件故障:某些情況下,由于Docker本身的配置錯(cuò)誤、軟件bug或與其他系統(tǒng)服務(wù)沖突,可能會(huì)導(dǎo)致鏡像列表無(wú)法正確顯示或鏡像文件丟失。
5.系統(tǒng)故障或重啟:雖然不常見(jiàn),但如果在操作系統(tǒng)層面發(fā)生故障,比如非正常關(guān)機(jī)或硬件故障,可能導(dǎo)致存儲(chǔ)在本地磁盤(pán)上的Docker鏡像數(shù)據(jù)損壞或丟失。
6. 意外操作:誤操作如直接刪除了鏡像所依賴的存儲(chǔ)文件,也會(huì)導(dǎo)致鏡像看似“消失”。
根據(jù)我這里的實(shí)際情況判斷,大概率是docker數(shù)據(jù)卷分配空間不足。
解決方案:
因?yàn)閐ocker 的垃圾回收策略只是回收未使用的鏡像,我這里就簡(jiǎn)單的處理了一下,鏡像生成后,直接docker run 一下,這樣就不會(huì)被清理掉了。
當(dāng)然這里只是應(yīng)急處理。
正確方法應(yīng)該是增加磁盤(pán)空間。
或者禁用docker image prune自動(dòng)化任務(wù): 如果你之前設(shè)置了定時(shí)任務(wù)或cron job來(lái)運(yùn)行docker system prune或其他清理命令,可以取消這些任務(wù)。
或者增大Docker數(shù)據(jù)卷的大?。?如果使用的是虛擬機(jī)環(huán)境,可以考慮增加分配給Docker的數(shù)據(jù)卷大小
到此這篇關(guān)于docker鏡像消失的問(wèn)題及臨時(shí)解決方案的文章就介紹到這了,更多相關(guān)docker鏡像消失內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決docker登錄私倉(cāng)失敗cannot validate certificate for
文章主要講述了如何搭建和配置Harbor鏡像倉(cāng)庫(kù),并詳細(xì)描述了解決在登錄Harbor私倉(cāng)時(shí)遇到的問(wèn)題的方法,包括重啟Docker服務(wù)、解決登錄報(bào)錯(cuò)、重新配置認(rèn)證等步驟,最后成功拉取鏡像2026-04-04
Docker鏡像發(fā)布到Docker?Hub的實(shí)現(xiàn)方法
本文主要介紹了Docker鏡像發(fā)布到Docker?Hub的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
Docker運(yùn)行hello-world鏡像失敗或超時(shí)的問(wèn)題
在安裝Docker并嘗試運(yùn)行hello-world時(shí),可能會(huì)遇到超時(shí)問(wèn)題,這通常是由于默認(rèn)的鏡像源訪問(wèn)速度慢造成的,解決這個(gè)問(wèn)題的辦法是更換鏡像源,雖然許多人推薦使用阿里云的鏡像源,對(duì)Docker hello-world超時(shí)問(wèn)題感興趣的朋友一起看看吧2024-09-09
docker/docker desktop for window環(huán)境下創(chuàng)建本地鏡像倉(cāng)庫(kù)方式
這篇文章主要介紹了docker/docker desktop for window環(huán)境下創(chuàng)建本地鏡像倉(cāng)庫(kù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03
如何使用?Dockerfile?創(chuàng)建一個(gè)簡(jiǎn)單容器
這篇文章主要介紹了如何使用?Dockerfile?創(chuàng)建一個(gè)簡(jiǎn)單容器,Dockerfile?是用于指導(dǎo)?docker?創(chuàng)建自定義?image?的一系列指令,是用于創(chuàng)建?image?的藍(lán)圖,下文更多詳細(xì)介紹需要的小伙伴可以參考一下2022-04-04
Docker 部署Go的兩種基礎(chǔ)鏡像的實(shí)現(xiàn)
這篇文章主要介紹了Docker 部署Go的兩種基礎(chǔ)鏡像的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04

