亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

如何刪除docker-register鏡像及none無效鏡像詳解

2024-09-01 13:53:03
字體:
來源:轉載
供稿:網友

背景介紹

我們大家在服務器上搭建了docker registry,所有的構建鏡像都會集中在一個服務器上,久而久之硬盤就被塞滿了。本文會著重介紹兩種清理方式。一是<none>標簽的鏡像,二是刪除docker物理鏡像。下面話不多說了,來一起看看詳細的介紹吧。

docker<none>鏡像

有效的 none 鏡像

為了理解 <none> 鏡像,我們先要理解 Docker鏡像系統的工作機制,以及 layers是如何組織起來的。

當我拉取一個stresser鏡像的時候,運行 docker images -a命令,會發現我憑空多出來一個< none>:< none> 鏡像。

? docker images -aREPOSITORY  TAG   IMAGE ID  CREATED  SIZEstresser   latest  68ee9b96793e 9 days ago  242MB<none>   <none>  dbcff8952263 9 days ago  242MB

當我要刪除這個< none>鏡像的時候,執行下面的命令,會提示失敗,我要刪除stresser鏡像才能順帶把<none>鏡像刪除。

? docker rmi dbcff8952263Error response from daemon: conflict: unable to delete dbcff8952263 (cannot be forced) - image has dependent child images? docker rmi 68ee9b96793eUntagged: stresser:latestDeleted: sha256:68ee9b96793e0a3b3a77ec713f1bf4eb19446bd13fb933557dc401e452ca04c4Deleted: sha256:dbcff895226371eba2640c178414f5828aa5e6f417978b63ffa490d3865dc79aDeleted: sha256:875a0b6d28d1f52fc980a0948055d3ec3a38158ff7aa6a1a2c19c4243b96a57a? docker rmi dbcff8952263Error response from daemon: No such image: dbcff8952263:latest

<none>:<none> 鏡像是干嘛的?我們先看看Docker文件系統的組成,docker鏡像是由很多 layers組成的,每個 layer之間有父子關系,所有的docker文件系統層默認都存儲在/var/lib/docker/graph目錄下,docker稱之為圖層數據庫,在這個例子中 stresser 由兩層(layer)組成,我們可以在/var/lib/docker/graph目錄下找到層。

當我們pull stresser鏡像的時候,最先下載的是 dbcff8952263 < none>父層,接下來才會下載stresser:latest,stresser由兩層組成。 我們可以進入 cat /car/lib/docker/graph/${containerId}/json ,查看鏡像的元數據來了解詳細信息(下面樣例是其他的容器信息)

{"id":"37dd4150474449629e8a7b576eed26cb8583d2fe5a3edf10fd84323dfd538678","parent":"5cf74bcb1bde2e2249824a682f45235954543a5d57081db22c96402342db49e9","created":"2017-04-06T16:28:35.51523979Z","container_config":{"Hostname":"","Domainname":"","User":"","Memory":0,"MemorySwap":0,"CpuShares":0,"Cpuset":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"PortSpecs":null,"ExposedPorts":null,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":null,"Cmd":["/bin/sh -c set -e; /u0009NGINX_GPGKEY=573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62; /u0009found=''; /u0009for server in /u0009/u0009ha.pool.sks-keyservers.net /u0009/u0009hkp://keyserver.ubuntu.com:80 /u0009/u0009hkp://p80.pool.sks-keyservers.net:80 /u0009/u0009pgp.mit.edu /u0009; do /u0009/u0009echo /"Fetching GPG key $NGINX_GPGKEY from $server/"; /u0009/u0009apt-key adv --keyserver /"$server/" --keyserver-options timeout=10 --recv-keys /"$NGINX_GPGKEY/" /u0026/u0026 found=yes /u0026/u0026 break; /u0009done; /u0009test -z /"$found/" /u0026/u0026 echo /u003e/u00262 /"error: failed to fetch GPG key $NGINX_GPGKEY/" /u0026/u0026 exit 1; /u0009exit 0"],"Image":"","Volumes":null,"WorkingDir":"","Entrypoint":null,"NetworkDisabled":false,"MacAddress":"","OnBuild":null,"Labels":null},"author":"NGINX Docker Maintainers /"docker-maint@nginx.com/"","Size":4901}

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

無效的 none 鏡像

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

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

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

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

用一個例子來講解:

假設我們要構建一個新的鏡像,Dockerfile 文件如下

FORM Ubuntu:latestRUN echo 'hello world'

當我們構建 docker build -t hello-world ./ 的時候,會生成一個新的鏡像。

可是過了一個月之后,Ubuntu發布了新的鏡像,這個時候我們再次構建一個 hello world鏡像,會依賴于最新的 Ubuntu

問題來了,我們引用舊的Ubuntu的hello-world鏡像,這個時候就會成為沒有標簽的 dangling鏡像!使用下面的命令可以清理

docker rmi $(docker images -f "dangling=true" -q)

docker沒有自動垃圾回收處理機制,未來可能會有這方面的改進,但是目前我們只能這樣手動清理(寫個腳本就好)。

刪除本地硬盤的鏡像

當我們registry服務器存在很多tag標簽的鏡像,但是硬盤空間不夠用的時候,我們會希望刪除存量的鏡像給服務器騰出空間,registry自帶了API接口刪除鏡像,但是即使我們調用了,他也只是邏輯層面的刪除,軟刪除(soft delete),只是把二進制和鏡像的關系解除罷了,實際上鏡像一直存在我們的硬盤中,我們需要一種方式徹底物理刪除存量空間。網上有第三方的解決方案:delete-docker-registry-image,接下來列出操作步驟,操作之前先把 registry服務停掉。

安裝:

curl https://raw.githubusercontent.com/burnettk/delete-docker-registry-image/master/delete_docker_registry_image.py | sudo tee /usr/local/bin/delete_docker_registry_image >/dev/nullsudo chmod a+x /usr/local/bin/delete_docker_registry_image

設置環境變量:數據存放地址:

我服務器上registry的配置如下:

 volumes: - /root/docker-data/registry/data:/var/lib/registry
root@iZ94ft8hgzqZ:~/docker-data/registry/data/docker/registry/v2/repositories# ls -altotal 108drwxr-xr-x 27 root root 4096 Aug 21 18:29 .drwxr-xr-x 4 root root 4096 Oct 30 2015 ..drwxr-xr-x 5 root root 4096 Mar 27 2016 exampledrwxr-xr-x 5 root root 4096 Mar 20 19:25 gitlab_ansibledrwxr-xr-x 5 root root 4096 Mar 22 2016 hlpays-jobdrwxr-xr-x 5 root root 4096 Jan 26 2016 hlpays-oadrwxr-xr-x 5 root root 4096 Mar 24 2016 hlpays-portaldrwxr-xr-x 5 root root 4096 Mar 27 18:32 ifex-crm
export REGISTRY_DATA_DIR=/root/docker-data/registry/data/docker/registry/v2

邏輯刪除:

delete_docker_registry_image –image tickets –dry-run ; 只是邏輯刪除,沒什么用,演示一下而已。。。

root@iZ94ft8hgzqZ:~/docker-data/registry/data/docker/registry/v2/repositories# delete_docker_registry_image --image tickets --dry-runINFO [2017-09-13 18:21:04,505] DRY_RUN: would have deleted /root/docker-data/registry/data/docker/registry/v2/blobs/sha256/27/27dedd9200ff607e76eb9d0e10beb103f53551e4ed39829d767cfbc208b79581INFO [2017-09-13 18:21:04,506] DRY_RUN: would have deleted /root/docker-data/registry/data/docker/registry/v2/blobs/sha256/1b/1b2aade332a7133b1a03cae7695a3dcf9413dd017ff41f35a1bb1506becbacf3

物理數據刪除:

刪除物理內存,能看到硬盤空間已經空出來了。

delete_docker_registry_image --image ticketsdf -h 

刪除指定標簽:

delete_docker_registry_image --image testrepo/awesomeimage:supertag

其他用法請參照官網

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产va免费精品高清在线| 亚洲欧美在线看| 久久九九热免费视频| 国产精品中文字幕久久久| 国产午夜精品视频免费不卡69堂| 国产精品国产三级国产专播精品人| 精品久久久久久久久久久| 91精品国产高清自在线看超| 日韩av在线看| 亚洲人成毛片在线播放| 国产极品精品在线观看| 日韩高清不卡av| 亚洲人成电影在线观看天堂色| 国产精品丝袜久久久久久不卡| 日韩美女毛茸茸| 成人情趣片在线观看免费| 热久久这里只有精品| 国产精品国产三级国产aⅴ9色| 国产午夜精品全部视频播放| 成人黄色免费看| 日韩女优人人人人射在线视频| 91亚洲国产精品| 久久久在线免费观看| 国产91色在线播放| 国产精品欧美一区二区三区奶水| 亚洲一级黄色av| 亚洲综合一区二区不卡| 欧洲成人免费aa| 国产91色在线|免| 国产91精品黑色丝袜高跟鞋| 久久天天躁夜夜躁狠狠躁2022| 欧美成人免费播放| 欧美香蕉大胸在线视频观看| 亚洲xxxx妇黄裸体| 亚洲视频axxx| 日产日韩在线亚洲欧美| 精品国产一区久久久| 久久久久www| 国产亚洲精品久久久久动| 国产精品国产三级国产专播精品人| 成人免费视频a| 一区二区国产精品视频| 91精品视频一区| 亚洲三级 欧美三级| 欧美成人久久久| 久久亚洲综合国产精品99麻豆精品福利| 久久夜色精品国产欧美乱| 91香蕉嫩草神马影院在线观看| 欧美孕妇与黑人孕交| 欧美人在线观看| 成人天堂噜噜噜| 日韩av片免费在线观看| 97欧美精品一区二区三区| 亚洲欧美日本伦理| 一区二区三区四区精品| 亚洲福利视频久久| 色偷偷av亚洲男人的天堂| 欧美理论电影在线播放| 日韩在线中文字幕| 久久精品亚洲一区| 日韩中文视频免费在线观看| 日韩在线国产精品| 中文字幕免费精品一区| 国产精品久久久久久久天堂| 欧美亚洲免费电影| 精品国产91久久久久久| 国产91色在线|免| 亚洲精品在线看| 亚洲91精品在线观看| 夜夜躁日日躁狠狠久久88av| 亚洲欧美在线第一页| 久久免费视频在线观看| 日韩激情片免费| 色天天综合狠狠色| 久久久久久有精品国产| 精品国产91久久久久久| 国产精品偷伦免费视频观看的| 国产伊人精品在线| 2020国产精品视频| 久久久免费av| 成人在线视频福利| 欧美国产乱视频| 欧美在线观看网址综合| 欧美激情手机在线视频| 亚洲最新av在线网站| 成人免费网视频| 国产成人精品日本亚洲| 亚洲精品福利视频| 午夜精品三级视频福利| 久久精品99久久久香蕉| 欧美日韩久久久久| 欧美日韩国产成人在线观看| 7777免费精品视频| 亚洲一区精品电影| 久久久国产精品x99av| 国产69久久精品成人看| 中文字幕亚洲一区二区三区五十路| 国产不卡在线观看| 欧美日韩国产成人高清视频| 国产网站欧美日韩免费精品在线观看| 亚洲欧美中文日韩在线| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲成人av片在线观看| 成人黄色av免费在线观看| 亚洲人成网在线播放| 亚洲精品国偷自产在线99热| 国产一区二区三区视频免费| 国产精品久在线观看| 久久精品电影网站| 国产精品视频大全| 日韩视频在线免费| 日本中文字幕不卡免费| 国内外成人免费激情在线视频| 福利一区福利二区微拍刺激| 日韩成人网免费视频| 国产中文欧美精品| 国产精品成人一区二区三区吃奶| 成人精品久久一区二区三区| 成人精品在线视频| 26uuu日韩精品一区二区| 国模私拍一区二区三区| 亚洲精品久久久久久久久久久久| 在线电影av不卡网址| 日本免费久久高清视频| 亚洲综合日韩在线| 亚洲人成绝费网站色www| 日本乱人伦a精品| 久久偷看各类女兵18女厕嘘嘘| 亚洲精选一区二区| 日韩有码在线视频| 日韩精品小视频| 一区二区三区 在线观看视| 91精品在线影院| 欧美主播福利视频| 国产精品久久一区主播| 青草热久免费精品视频| 国产精品pans私拍| 久久久免费电影| …久久精品99久久香蕉国产| 中文欧美在线视频| 欧美在线播放视频| 国产精品永久免费在线| 国产欧美日韩视频| 精品久久久久久久久久久久久久| 国产91ⅴ在线精品免费观看| 国产精品xxx视频| 68精品久久久久久欧美| 亚洲欧美在线播放| 亚洲男人的天堂网站| 国产精品日韩久久久久| 亚洲欧美中文字幕在线一区| 在线播放精品一区二区三区| 色悠久久久久综合先锋影音下载| 成人黄色片在线| 亚洲香蕉在线观看| 国产噜噜噜噜噜久久久久久久久| 亚洲欧美日韩视频一区| 国产主播在线一区| 另类美女黄大片| 国产91色在线| 成人写真视频福利网| 久久精品人人爽| 亚洲色图国产精品| 91久久精品一区|