docker鏡像消失的問題及臨時(shí)解決方案
場(chǎng)景:
想要在服務(wù)器上load一個(gè)鏡像,用于使用Dockerfile 進(jìn)行其他服務(wù)鏡像的打包。
問題描述
在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 鏡像沒了。新打的鏡像也消失了。
原因分析:
我這里是通過(guò)度娘查到的原因,給出的大概幾個(gè)原因:
1. 磁盤空間管理:當(dāng)主機(jī)磁盤空間不足時(shí),Docker守護(hù)進(jìn)程可能會(huì)根據(jù)其內(nèi)部的垃圾回收策略自動(dòng)刪除不再使用的鏡像以釋放空間。這通常會(huì)影響到那些沒有被任何容器引用的鏡像。
2. 手動(dòng)或自動(dòng)清理:用戶或系統(tǒng)管理員可能執(zhí)行了docker system prune、docker image
prune等命令來(lái)清理未使用的鏡像,這些命令會(huì)刪除所有 dangling(孤立)鏡像或者按照指定條件篩選出不再需要的鏡像并進(jìn)行刪除。
3.倉(cāng)庫(kù)問題:如果鏡像是從遠(yuǎn)程倉(cāng)庫(kù)(如 Docker Hub或私有倉(cāng)庫(kù))拉取的,并且后來(lái)該倉(cāng)庫(kù)中的鏡像被刪除或者因?yàn)榫W(wǎng)絡(luò)原因?qū)е聼o(wú)法訪問,則在本地通過(guò)標(biāo)簽引用的鏡像可能無(wú)法正常pull和使用,看起來(lái)像是消失了。
4. 配置錯(cuò)誤或軟件故障:某些情況下,由于Docker本身的配置錯(cuò)誤、軟件bug或與其他系統(tǒng)服務(wù)沖突,可能會(huì)導(dǎo)致鏡像列表無(wú)法正確顯示或鏡像文件丟失。
5.系統(tǒng)故障或重啟:雖然不常見,但如果在操作系統(tǒng)層面發(fā)生故障,比如非正常關(guān)機(jī)或硬件故障,可能導(dǎo)致存儲(chǔ)在本地磁盤上的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)該是增加磁盤空間。
或者禁用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鏡像消失的問題及臨時(shí)解決方案的文章就介紹到這了,更多相關(guān)docker鏡像消失內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
搭建docker-nginx服務(wù),訪問nginx報(bào)錯(cuò)403問題及解決
這篇文章主要介紹了搭建docker-nginx服務(wù),訪問nginx報(bào)錯(cuò)403問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03用docker部署RabbitMQ環(huán)境的詳細(xì)介紹
這篇文章主要介紹了用docker部署RabbitMQ環(huán)境,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-07-07docker容器運(yùn)行成功但無(wú)法訪問的原因分析及解決方案(以Tomcat為例親測(cè)有效)
這篇文章主要介紹了docker容器運(yùn)行成功但無(wú)法訪問的原因分析及對(duì)應(yīng)解決方案(以Tomcat為例親測(cè)有效),文中通過(guò)圖文結(jié)合的方式介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2024-03-03Docker 中快速安裝tensorflow環(huán)境的方法步驟
這篇文章主要介紹了Docker 中快速安裝tensorflow環(huán)境的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-10-10Docker rocketmq部署的實(shí)現(xiàn)示例
最近學(xué)習(xí)使用 rocketmq,需要搭建 rocketmq 服務(wù)端,本文主要記錄 rocketmq 搭建過(guò)程以及這個(gè)過(guò)程踩到的一些坑,感興趣的可以了解一下2021-12-12Docker出現(xiàn)Cannot connect to the Docker daemon. Is the docker d
這篇文章主要介紹了Docker出現(xiàn)Cannot connect to the Docker daemon. Is the docker daemon running on this host錯(cuò)誤解決辦法的相關(guān)資料,需要的朋友可以參考下2016-12-12Docker?Push?Skipped?foreign?layer?的錯(cuò)誤問題及解決方案
當(dāng)Docker推送基于Windows鏡像到私有倉(cāng)庫(kù)的時(shí)候會(huì)遇到Skipped foreign layer的問題,這篇文章主要介紹了Docker?Push?Skipped?foreign?layer?的錯(cuò)誤問題及解決方案,需要的朋友可以參考下2022-05-05