刪除k8s環(huán)境過(guò)期鏡像&docker磁盤(pán)清理方式
刪除k8s環(huán)境過(guò)期鏡像&docker磁盤(pán)清理
docker system df
鏡像占用了超過(guò)3.718GB磁盤(pán)空間。

docker system df -v
1.images的SIZE是磁盤(pán)大小,SHARED SIZE,是共享大小,CONTAINERS是啟動(dòng)容器的個(gè)數(shù),如果是0就代表是沒(méi)有使用的鏡像。
2.Containers的size是修改層大小。
3.volume 的SIZE是所占空間大小,像"Mounts": bind這種掛載空間是沒(méi)有計(jì)算在內(nèi)的
[root@node172 ~]# docker system df --verbose #鏡像空間使用情況 Images space usage: REPOSITORY TAG IMAGE ID CREATED SIZE SHARED SIZE UNIQUE SIZE CONTAINERS registry.cn-shenzhen.aliyuncs.com/lolos/loloss flask-demon f4a0d136e2c6 3 weeks ago 120.3MB 5.613MB 114.7MB 3 ghcr.io/linkerd/controller edge-21.2.1 e1cdfb82032f 4 weeks ago 44MB 0B 44MB 0 ghcr.io/linkerd/proxy edge-21.2.1 49ce29cf9e64 4 weeks ago 114.6MB 69.24MB 45.34MB 0 registry.cn-shenzhen.aliyuncs.com/jbjb/alpine simple-v01 652ba0e5f116 4 weeks ago 24.53MB 5.613MB 18.92MB 0 registry.cn-shenzhen.aliyuncs.com/jbjb/demons-d productcatalogue8 ef9e688776d8 5 weeks ago 285.4MB 267.7MB 17.62MB 0 registry.cn-shenzhen.aliyuncs.com/jbjb/demons-d stockmanager1 fc9138052165 5 weeks ago 311MB 267.7MB 43.31MB 0 registry.cn-shenzhen.aliyuncs.com/jbjb/demons-d shopfront1 93b876a3b2d8 5 weeks ago 313.8MB 267.7MB 46.09MB 0 registry.cn-shenzhen.aliyuncs.com/jbjb/demons-d productcatalogue7 0fca3532f297 5 weeks ago 285.4MB 267.7MB 17.62MB 0 feiyu563/prometheus-alert latest 72af7e46fae0 6 weeks ago 38.24MB 5.577MB 32.66MB 0 grafana/grafana latest 13afb861111c 7 weeks ago 187.3MB 5.577MB 181.7MB 0 #容器空間使用情況 Containers space usage: CONTAINER ID IMAGE COMMAND LOCAL VOLUMES SIZE CREATED STATUS NAMES 9c5c77704f14 629df02b47c8 "/docker-entrypoint.…" 0 1.12kB 50 minutes ago Up 50 minutes k8s_nginx_nginx-6b69f5bc8b-s7c6n_default_ff2d472b-19b8-4da2-a886-c37f1e816494_0 6f1a7b49bf7a 629df02b47c8 "/docker-entrypoint.…" 0 420MB 50 minutes ago Up 50 minutes k8s_nginx_nginx-6b69f5bc8b-52rn8_default_6b3c4d0d-0aaa-4b1d-8c79-4ffb610f7985_0 f73844563277 629df02b47c8 "/docker-entrypoint.…" 0 1.12kB 50 minutes ago Up 50 minutes k8s_nginx_nginx-6b69f5bc8b-8ps4l_default_8fddf18a-928a-4435-9bbc-bd8ef584446d_0 066e8e715441 629df02b47c8 "/docker-entrypoint.…" 0 1.12kB 50 minutes ago Up 50 minutes k8s_nginx_nginx-6b69f5bc8b-kpgcj_default_ #本地卷使用情況 Local Volumes space usage: VOLUME NAME LINKS SIZE Build cache usage: 0B CACHE ID CACHE TYPE SIZE CREATED LAST USED USAGE SHARED
查看完我們可以通過(guò)以下命令進(jìn)行刪除
1. 可以通過(guò) Docker 內(nèi)置的 CLI 指令docker system prune來(lái)進(jìn)行自動(dòng)空間清理
[root@c169 ~]# docker system prune --help
Usage: docker system prune [OPTIONS]
Remove unused data
Options:
-a, --all Remove all unused images not just dangling ones
--filter filter Provide filter values (e.g. 'label=<key>=<value>')
-f, --force Do not prompt for confirmation
--volumes Prune volumes
docker system prune 自動(dòng)清理說(shuō)明
該指令默認(rèn)會(huì)清除所有如下資源
- 已停止的容器(container)
- 未被任何容器所使用的卷(volume)
- 未被任何容器所關(guān)聯(lián)的網(wǎng)絡(luò)(network)
- 所有懸空鏡像(image)。
- 該指令默認(rèn)只會(huì)清除懸空鏡像,未被使用的鏡像不會(huì)被刪除。添加-a 或 --all參數(shù)后,可以一并清除所有未使用的鏡像和懸空鏡像。
- 可以添加-f 或 --force參數(shù)用以忽略相關(guān)告警確認(rèn)信息
(溫馨提示如果文件太多太大這條命令會(huì)卡住,建議做pod驅(qū)逐到其他節(jié)點(diǎn)再執(zhí)行,或者使用腳本找到鏡像規(guī)律逐個(gè)刪除)
[root@dockercon ~]# docker system prune --all
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all images without at least one container associated to them
- all build cache
Are you sure you want to continue? [y/N] y
Deleted Containers:
f095899e7343e160d5b32d0688a6561a1a7f6af91c42ffe966649240b58ca23f
Deleted Images:
untagged: busybox:latest
untagged: busybox@sha256:e3789c406237e25d6139035a17981be5f1ccdae9c392d1623a02d31621a12bcc
deleted: sha256:6ad733544a6317992a6fac4eb19fe1df577d4dec7529efec28a5bd0edad0fd30
deleted: sha256:0271b8eebde3fa9a6126b1f2335e170f902731ab4942f9f1914e77016540c7bb
untagged: kalilinux/kali-linux-docker:latest
untagged: kalilinux/kali-linux-docker@sha256:28ff9e4bf40f7399e0570394a2d3d388a7b60c748be1b0a180c14c87afad1968
deleted: sha256:c927a54ec8a46164d7046b2a6dc09b2fce52b3066317d50cf73d14fa9778ca48
deleted: sha256:244c1920ef0442167cdbd095e5d29813cb5be0b70cc116faf8d7e50074f6c446
可以另外打開(kāi)一個(gè)終端,查看實(shí)時(shí)事件
(例如容器創(chuàng)建,刪除等均會(huì)實(shí)時(shí)顯示)
[root@node172 ~]# docker system events 2021-03-06T18:00:19.843255544+08:00 image untag sha256:f1a77cb119f480351fb7bdfcfeca2bcff57334a5205d9c770a7d5bc396287742 (name=sha256:f1a77cb119f480351fb7bdfcfeca2bcff57334a5205d9c770a7d5bc396287742) 2021-03-06T18:00:21.506665154+08:00 image delete sha256:f1a77cb119f480351fb7bdfcfeca2bcff57334a5205d9c770a7d5bc396287742 (name=sha256:f1a77cb119f480351fb7bdfcfeca2bcff57334a5205d9c770a7d5bc396287742)
腳本刪除方式如下
cat <<END> delel-image
#!/bin/bash
#刪除過(guò)期鏡像,保留最新5個(gè)版本
CDATE=`date '+%Y-%m-%d_%H:%M:%S'`
#######比如經(jīng)常發(fā)版的關(guān)鍵字是"rabbitmq"
for service in `docker images | grep 'rabbitmq' | awk '{print $1}' |sort -u`
do
for i in `docker images | grep $service | awk '{print $2}' | awk -F"-" '{print $1}' | sort -u`
do
banben=`docker images | grep $service | awk '{print $2}'`
mem=`docker images | grep $service | awk '{print $2}' |wc -l`
done
#echo $banben
#echo $mem
if [[ $mem -gt 3 ]];then
arr=(${banben// /})
#保留同樣類(lèi)型的5個(gè)鏡像
for(( j=3;j<${#arr[@]};j++)) do
docker rmi $service:${arr[j]}
#echo $service:${arr[j]}
echo "docker rmi $service:${arr[j]} 執(zhí)行時(shí)間:$CDATE" >> /home/log_delete_images.log
done
fi
done
END
- 執(zhí)行前

- 執(zhí)行后


總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
k8s?service?nodePort無(wú)法訪問(wèn)的問(wèn)題解決
今天有一個(gè)項(xiàng)目做service nodeport轉(zhuǎn)發(fā),結(jié)果設(shè)置完之后發(fā)現(xiàn)外網(wǎng)訪問(wèn)失敗,下面這篇文章主要給大家介紹了關(guān)于k8s?service?nodePort無(wú)法訪問(wèn)的問(wèn)題解決,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01
Kubernetes實(shí)現(xiàn)CI與CD配置教程
這篇文章主要為大家介紹了基于Kubernetes實(shí)現(xiàn)CI與CD配置教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
k8s 中的 service 如何找到綁定的 Pod 及實(shí)現(xiàn) 
service 是一組具有相同 label pod 集合的抽象,集群內(nèi)外的各個(gè)服務(wù)可以通過(guò) service 進(jìn)行互相通信,這篇文章主要介紹了k8s 中的 service 如何找到綁定的 Pod 以及如何實(shí)現(xiàn) Pod 負(fù)載均衡,需要的朋友可以參考下2022-10-10
K8S中某個(gè)容器突然出現(xiàn)內(nèi)存和CPU占用過(guò)高的問(wèn)題及解決方案
當(dāng)K8S容器出現(xiàn)資源過(guò)載時(shí),可通過(guò)kubectl監(jiān)控定位問(wèn)題,調(diào)整資源限制,優(yōu)化應(yīng)用代碼,拆分多應(yīng)用容器,利用監(jiān)控工具排查,實(shí)施水平擴(kuò)展或遷移負(fù)載,確保集群穩(wěn)定運(yùn)行2025-07-07
在?k8s?中部署Jenkins的實(shí)踐指南(最新推薦)
本文介紹了在Kubernetes(K8s)中部署Jenkins的方法和步驟,包括準(zhǔn)備K8s集群、選擇Jenkins鏡像、創(chuàng)建存儲(chǔ)資源、賬號(hào)授權(quán)、部署Jenkins、創(chuàng)建Service以及訪問(wèn)測(cè)試,Jenkins在K8s中的部署可以實(shí)現(xiàn)動(dòng)態(tài)資源管理、提高可靠性和容錯(cuò)能力、快速響應(yīng)變化和統(tǒng)一環(huán)境等優(yōu)勢(shì)2025-03-03

