image has dependent child images

問題:很多none的鏡像無法被刪除

解決過程:

1、通過 docker image prune -f 提示可刪除為 0

2、直接進行刪除報錯:

docker rmi 8f5116cbc201Error response from daemon: conflict: unable to delete 8f5116cbc201 (cannot be forced) - image has dependent child images

批量刪除容器,再刪除鏡像

# 停止所有容器
docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker stop# 刪除所有容器
docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker rm# 刪除所有none鏡像
docker images|grep none|awk '{print $3 }'|xargs docker rmi

還是以失敗告終。。。。。

原因
發現其實是因為TAG的問題,即有其他 image FROM 了這個 image,可以使用下面的命令列出所有在指定 image 之后創建的 image 的父 image

方案:
先查詢依賴

docker image inspect --format='{{.RepoTags}} {{.Id}} {{.Parent}}' $(docker image ls -q --filter since=XXX) # XXX指鏡像ID

然后根據根據TAG刪除容器,發現與之關聯的none會自動刪除

docker rm REPOSITORY:TAG

最終方案:

先保存鏡像,關聯的none會自動刪除,最后在導入鏡像,此時之前的none也不會在顯示

docker images -a |grep -v none |awk '{print "docker save "$1":"$2 " >"$2".tar && docker rmi "$1":"$2" && docker load -i "$2".tar && docker image ls -a|grep "$2""}' >docker_image.sh./docker_image.sh

補充
docker none鏡像

有效的 none 鏡像
Docker文件系統的組成,docker鏡像是由很多 layers組成的,每個 layer之間有父子關系,所有的docker文件系統層默認都存儲在/var/lib/docker/graph目錄下,docker稱之為圖層數據庫。

最后做一個總結< none>:< none> 鏡像是一種中間鏡像,我們可以使用docker images -a來看到,他們不會造成硬盤空間占用的問題(因為這是鏡像的父層,必須存在的),但是會給我們的判斷帶來迷惑。

無效的 none 鏡像

另一種類型的 < none>:< none> 鏡像是dangling images ,這種類型會造成磁盤空間占用問題。

像Java和Golang這種編程語言都有一個內存區,這個內存區不會關聯任何的代碼。這些語言的垃圾回收系統優先回收這塊區域的空間,將他返回給堆內存,所以這塊內存區對于之后的內存分配是有用的

docker的懸掛(dangling)文件系統與上面的原理類似,他是沒有被使用到的并且不會關聯任何鏡像,因此我們需要一種機制去清理這些懸空鏡像。

我們在上文已經提到了有效的< none>鏡像,他們是一種中間層,那無效的< none>鏡像又是怎么出現的?這些 dangling鏡像主要是我們觸發 docker build 和 docker pull命令產生的。

使用下面的命令可以清理
docker rmi $(docker images -f “dangling=true” -q)
docker沒有自動垃圾回收處理機制,未來可能會有這方面的改進,但是目前我們只能這樣手動清理(寫個腳本就好)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/37871.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/37871.shtml
英文地址,請注明出處:http://en.pswp.cn/news/37871.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

銀河麒麟安裝php7.1.33

銀河麒麟V10兼容CentOS 8 安裝過程與CentOS類似。 TencentOS3.1安裝PHPNginxredis測試系統_樂大師的博客-CSDN博客 可以參考之前我寫的文章。 不過有2個細節不同&#xff0c;下面說下。 問題1&#xff1a;編譯錯誤提示“error:off_t undefined” 解決方法&#xff1a; 編…

TCP收發信息(C++)

目錄 一、介紹 二、收數據 三、發數據 一、介紹 tcp和udp的區別之一&#xff0c;即tcp是有連接的&#xff0c;udp是無連接的&#xff0c;udp收發數據的代碼可以獨立運行&#xff0c;tcp發數據前必須確保收數據的一方是打開的&#xff0c;否則無法建立連接。 二、收數據 tc…

宋浩線性代數筆記(五)矩陣的對角化

本章的知識點難度和重要程度都是線代中當之無愧的T0級&#xff0c;對于各種雜碎的知識點&#xff0c;多做題復盤才能良好的掌握&#xff0c;良好掌握的關鍵點在于&#xff1a;所謂的性質A與性質B&#xff0c;是誰推導得誰~

MyBatis的SqlSession使用步驟

對MyBatis的SqlSession理解 SqlSession是 MyBatis 框架中的一個接口&#xff0c;用于執行與數據庫相關的操作。它提供了一系列方法&#xff0c;用于查詢、插入、更新和刪除數據等數據庫操作。 SqlSession接口是通過SqlSessionFactory創建的&#xff0c;每個SqlSession實例都代…

Ubuntu22.04復現SHADEWACHER(手動安你就慢了)

因為我是打算跑TC數據集&#xff0c;所以跳過audit安裝。 我的Ubuntu使用的是清華源。 1. Parser Setup 1.1 g apt install g1.2 neo4j Ubuntu22.04換什么源都會導致無法定位軟件包&#xff0c;添加neo4j的官方源又會導致不信任的源。 22.04以下的版本&#xff0c;直接用命…

MySQL 根據多字段查詢重復數據

MySQL 根據多字段查詢重復數據 在實際的數據庫應用中&#xff0c;我們經常需要根據多個字段來查詢重復的數據。MySQL 提供了一些方法來實現這個功能&#xff0c;讓我們能夠快速準確地找到和處理重復數據。本文將介紹如何使用 MySQL 來根據多字段查詢重復數據&#xff0c;并提供…

SIFT 算法 | 如何在 Python 中使用 SIFT 進行圖像匹配

介紹 人類通過記憶和理解來識別物體、人和圖像。你看到某件事的次數越多,你就越容易記住它。此外,每當一個圖像在你的腦海中彈出時,它就會將該項目或圖像與一堆相關的圖像或事物聯系起來。如果我告訴你我們可以使用一種稱為 SIFT 算法的技術來教機器做同樣的事情呢? 盡管…

C語言——動態內存函數(malloc、calloc、realloc、free)

了解動態內存函數 前言&#xff1a;一、malloc函數二、calloc函數三、realloc函數四、free函數 前言&#xff1a; 在C語言中&#xff0c;動態內存函數是塊重要的知識點。以往&#xff0c;我們開辟空間都是固定得&#xff0c;數組編譯結束后就不能繼續給它開辟空間了&#xff0…

貼吧照片和酷狗音樂簡單爬取

爬取的基本步驟 很簡單&#xff0c;主要是兩大步 向url發起請求 這里注意找準對應資源的url&#xff0c;如果對應資源不讓程序代碼訪問&#xff0c;這里可以偽裝成瀏覽器發起請求。 解析上一步返回的源代碼&#xff0c;從中提取想要的資源 這里解析看具體情況&#xff0c;一…

13 計算機視覺-代碼詳解

13.2 微調 為了防止在訓練集上過擬合&#xff0c;有兩種辦法&#xff0c;第一種是擴大訓練集數量&#xff0c;但是需要大量的成本&#xff1b;第二種就是應用遷移學習&#xff0c;將源數據學習到的知識遷移到目標數據集&#xff0c;即在把在源數據訓練好的參數和模型&#xff…

淺談現代醫院手術室IT供配電系統的設計與研究

安科瑞 華楠 &#xff3b;摘要&#xff3d; 隨著人們的生活水平的不斷提高&#xff0c;醫療條件的不斷改善&#xff0c;人們對健康越來越重視同時對醫療條件的要求也越來越高&#xff0c;對醫院手術室醫療設施提出了新的要求。以往醫院普通手術室狀況已不能滿足人們的要求&…

GPT的第一個創作

嗨&#xff0c;大家好&#xff0c;我是賴興泳&#xff01;今天&#xff0c;我要和大家聊一聊前端開發&#xff0c;就像我用音符創造音樂一樣&#xff0c;前端開發也是創造美麗的用戶界面的過程。 前端開發是構建網站和應用程序用戶界面的關鍵部分。就像音樂家需要精心編排音符…

騰訊云CVM服務器端口在安全組中打開!

騰訊云服務器CVM端口怎么開通&#xff1f;騰訊云服務器端口是通過配置安全組規則來開通的&#xff0c;騰訊云服務器網以開通80端口為例來詳細說下騰訊云輕量應用服務器開啟端口的方法&#xff0c;其他的端口的開通如8080、1433、443、3306、8888等端口也適用于此方法&#xff0…

基于Yolov5與LabelMe訓練自己數據的圖像分割完整流程

基于Yolov5與LabelMe訓練自己數據的實例分割完整流程 1. Yolov5配置2. 創建labelme虛擬環境4. 接下來開始使用labelme繪制分割數據集4.1 json to txt4.2 劃分數據集(可分可不分) 5. 訓練 1. Yolov5配置 參照這邊文章&#xff1a; https://blog.csdn.net/ruotianxia/article/de…

okcc對接ASR平臺,okcc客戶投訴的安全問題

客戶投訴: 客戶為什么要投訴&#xff1f;實際上分為兩種情況&#xff0c;一是客戶被冒犯到不能容忍導致的投訴&#xff0c;二是惡意投訴。降低客戶被冒犯投訴的概率&#xff0c;無非就是選擇客戶、規范用語、降低頻度&#xff1b;減少惡意投訴&#xff0c;回避是實踐證明最有效…

前端= 結構(HTML)+ 樣式(CSS)+ 行為(JavaScript)

前端開發確實涵蓋了行為&#xff08;JavaScript&#xff09;、樣式&#xff08;CSS&#xff09;和結構&#xff08;HTML&#xff09;這三個主要方面。這三個方面在前端開發中密切協作&#xff0c;共同構建用戶界面和用戶體驗。 結構&#xff08;Structure&#xff09;&#xff…

java # Servlet

一、什么是Servlet&#xff1f; Servlet是javaEE規范之一。規范就是接口。JavaWeb三大組件分別是&#xff1a;Servlet程序、Filter過濾器、Listener監聽器。Servlet是運行在服務器上的一個Java小程序&#xff0c;它可以接收客戶端發送來的請求&#xff0c;并響應數據給客戶端。…

Django筆記之中間件介紹

這一節介紹一下 Django 的中間件。 關于中間件&#xff0c;官方文檔的解釋為&#xff1a;中間件是一個嵌入 Django 系統的 request 和 response 的鉤子框架&#xff0c;是一個能夠全局改變 Django 輸入/輸出的系統。 我們可以這樣理解&#xff0c;一個 request 請求發送到 Dj…

《C語言深度解剖》.pdf

&#x1f407; &#x1f525;博客主頁&#xff1a; 云曦 &#x1f4cb;系列專欄&#xff1a;深入理解C語言 &#x1f4a8;吾生也有涯&#xff0c;而知也無涯 &#x1f49b; 感謝大家&#x1f44d;點贊 &#x1f60b;關注&#x1f4dd;評論 C語言深度解剖.pdf 提取碼:yunx

KCC@深圳開源讀書會即將舉辦,來與行業大咖面對面交流

KCC&#xff0c;全稱 KAIYUANSHE City Community&#xff08;中文&#xff1a;開源社城市社區&#xff09;是由開源社發起&#xff0c;旨在讓開源社區在每個城市落地生根的地域性開源組織。 自2023年2月份發起以來&#xff0c;我們已經在南京、上海、深圳、北京、硅谷、新加坡、…