Harbor鏡像刪除回收秕铛?只看這篇

最近约郁,公司的技術(shù)平臺,運維的破事兒頗多但两。Jira無法訪問鬓梅,ES堆內(nèi)存不足,Jenkins頻繁不工作谨湘。绽快。等等等,讓我這個剛?cè)腴T的小兵抓心腦肝紧阔,夜不能寐坊罢,關鍵時刻方恨經(jīng)驗薄弱呀!擅耽!一波未平活孩,一波又起,這不乖仇,Harbor鏡像庫又無法訪問了憾儒。查了下磁盤,發(fā)現(xiàn)/data目錄已經(jīng)占用了99%这敬,這還怎么愉快的工作了航夺。搞他就是了蕉朵!

使用Harbor API刪除鏡像

網(wǎng)上找了太多的文章都是通過Python或者shell腳本寫的崔涂,因為自身沒弄過python,shell腳本也不熟始衅,而且大多不符合我的特殊需求冷蚂。所以我打算直接使用Spring boot ,并利用Quartz做定時任務檢查汛闸,調(diào)用Harbor API蝙茶,完成鏡像的刪除。由于harbor鏡像庫保存了公司所有項目的鏡像诸老,有些倉庫下的鏡像比較少隆夯,時間也比較久遠,不少鏡像都是繼承的關系,不能單一的按照時間和數(shù)量做刪除蹄衷。這里我的策略是每個鏡像倉庫至少保留5個Tag忧额;如果多于5個,則只保留最近15天的Tag愧口。

完整代碼我已貼到Github上睦番,如果大家需要的話可以在文末找到。

Harbor鏡像占用過多磁盤

docker鏡像是分層的耍属,registry在存儲鏡像的時候托嚣,將docker鏡像分成了2部分:

  1. 鏡像元數(shù)據(jù)(manifests),存儲在docker/registry/v2/repositories目錄中厚骗,在這里會看到registry上的項目示启、項目中的鏡像、鏡像到Layer的索引信息溯捆。
  2. blobs丑搔,存儲在docker/registry/v2/blobs目錄中,在這里按00-ff分目錄存儲了所有鏡像的layer提揍。

如果有2個鏡像使用了同一個基礎鏡像啤月,那么在registry上存儲的時候,blobs只有一份數(shù)據(jù)劳跃,而鏡像元數(shù)據(jù)中兩個鏡像各自的索引都有一部分layer指向相同的layer谎仲。

舉個例子。

初始狀態(tài)刨仑,A郑诺、B兩個鏡像,都是基于layer a所做的鏡像杉武;A引用a,b辙诞,B引用a,c。

A -----> a <----- B
    \--> b     |
         c <--/

之后刪掉B鏡像(通過Harbor的web轻抱,或者通過api)

A -----> a     B
    \--> b
         c

此時layer c實際已經(jīng)沒人用了飞涂,但是registry在刪除B鏡像時,只是會刪除B的元數(shù)據(jù)祈搜,并不會主動刪除layer c较店。

layer c就是無人照看的孤兒待回收的垃圾,需要GC容燕。

果然 /data/registry/docker/registry這個目錄占了600多GB梁呈,我們抓到了真兇。

GC回收

使用API蘸秘,刪掉鏡像官卡,UI上確實看不見了蝗茁,但是我們發(fā)現(xiàn)磁盤并未釋放,還需要回收GC寻咒。

使用docker ps, 我們可以看見harbor相關的9個容器评甜。

image

進入鏡像存儲位置,我們使用 docker exec -it 3501 /bin/bash仔涩,進到registry這個容器里

image

df -h查看剩余空間

image

先dry-run一下忍坷,看看待刪除的報告,此步不會真正執(zhí)行刪除熔脂。

registry garbage-collect --dry-run /etc/registry/config.yml

可以清理的blobs還是挺多的佩研。去掉dry-run,實際跑一下

<pre style="margin: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px !important; background: rgb(238, 238, 238); border: 0px; border-radius: 2px;">registry garbage-collect /etc/registry/config.yml</pre>

GC效果還可以霞揉,清理出來500GB左右的空間旬薯。

這里如果執(zhí)行刪除時提示對/storage/docker/registry/v2/blobs/sha256/5e/5e526656b6e423eb836829b95951913719a48efa2649189f0a039b068eb59e10/data 沒有權(quán)限,在容器外執(zhí)行

chmod -R 777 /data/registry/docker/registry/v2

給整個目錄授權(quán)即可

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末适秩,一起剝皮案震驚了整個濱河市绊序,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌秽荞,老刑警劉巖骤公,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異扬跋,居然都是意外死亡阶捆,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門钦听,熙熙樓的掌柜王于貴愁眉苦臉地迎上來洒试,“玉大人,你說我怎么就攤上這事朴上±萜澹” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵痪宰,是天一觀的道長叼架。 經(jīng)常有香客問我,道長酵镜,這世上最難降的妖魔是什么碉碉? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任柴钻,我火速辦了婚禮淮韭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘贴届。我一直安慰自己靠粪,他們只是感情好蜡吧,可當我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著占键,像睡著了一般昔善。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上畔乙,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天君仆,我揣著相機與錄音,去河邊找鬼牲距。 笑死返咱,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的牍鞠。 我是一名探鬼主播咖摹,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼难述!你這毒婦竟也來了萤晴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤胁后,失蹤者是張志新(化名)和其女友劉穎店读,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體攀芯,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡两入,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了敲才。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片裹纳。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖紧武,靈堂內(nèi)的尸體忽然破棺而出剃氧,到底是詐尸還是另有隱情,我是刑警寧澤阻星,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布朋鞍,位于F島的核電站,受9級特大地震影響妥箕,放射性物質(zhì)發(fā)生泄漏滥酥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一畦幢、第九天 我趴在偏房一處隱蔽的房頂上張望坎吻。 院中可真熱鬧,春花似錦宇葱、人聲如沸瘦真。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诸尽。三九已至原杂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間您机,已是汗流浹背穿肄。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留际看,地道東北人被碗。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像仿村,于是被迫代替她去往敵國和親锐朴。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,465評論 2 348