需求以及方案:容器存儲目錄磁盤使用率過高,但是不知道是哪個容器佔用的,有大日誌,也不好清楚。此時使用du -sh定義到大文件,然後根據路徑找到容器,然後在k8s主節點進入這個容器,進行日誌處理,釋放磁盤空間
overlay2下查看目錄對應哪個容器
在Docker中,Overlay2是一個存儲驅動,用於管理容器的文件系統層。當你想在Overlay2目錄下查看某個目錄對應的容器時,可以按照以下步驟操作:
-
首先,你需要進入
/var/lib/docker/overlay2
目錄。這個目錄包含了所有容器的文件系統層。
cd /var/lib/docker/overlay2/ |
-
在Overlay2目錄下,你可以使用
du
命令來查看各個目錄佔用的磁盤空間大小,並找出佔用空間最大的目錄。例如:
du -s ./* | sort -rn | more |
這個命令會顯示每個目錄的大小,並按照從大到小的順序排序。
-
當你找到了佔用空間較大的目錄後,可以使用
docker ps -q | xargs docker inspect
命令來查找對應的容器。你需要將上一步中找到的目錄名作爲參數傳遞給grep
命令,以過濾出與該目錄相關的容器信息。例如,如果你的目錄名是bff25099a59b0fc8addd06f9223872f2904256f0432b3c3c47b58faef167115f
,那麼你可以執行以下命令:
docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Id}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}' | grep "bff25099a59b0fc8addd06f9223872f2904256f0432b3c3c47b58faef167115f" |
這個命令會顯示與該目錄相關的容器的進程ID、容器ID、容器名稱和存儲工作路徑。
通過以上步驟,你應該能夠找到在Overlay2目錄下某個目錄對應的容器信息。請注意,這些步驟需要具有足夠的權限才能執行,通常需要使用root
用戶或者具有sudo權限的用戶來執行這些命令。
cd /var/lib/docker/overlay2/
find ./ -name "*log"|xargs ls -lh|grep G
[[email protected] overlay2]# lsof /var/lib/docker/overlay2/7b40dxxxxde1ffd7/diff/data/logs/api/cleaxxxport_data.log [[email protected] overlay2]# lsof |grep 7b40d40ba6d01f8e ^C [[email protected] overlay2]# docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Id}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}' | grep "bff25099a59b0fc8addd06f9223872f2904256f0432b3c3c47b58faef167115f" [[email protected] overlay2]# docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Id}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}' | grep "7b40d40ba6d01xxxxxxxx7d4de1ffd7" 28222, 00c5675a148d2f99c8c5f1ecb5fc4a1e6278b7b9cd65502f2784e6e7389bfa2e, /k8s_app_boosterclean-deploy-7x_0, /var/lib/docker/overlay2/7b40d40ba6d01f8ebb0edb032d8c82a944e549f5dd925dfbf8e7d67d4de1ffd7/work [[email protected] overlay2]# docker ps |grep app_boosterclean-deploy 00c5675a148d qaxx/boosterclean "/entrypoint.sh /usr…" 13 months ago Up 13 months k8s_ax5-z9x166f0_0 [[email protected] overlay2]# docker exec -it 00c5 bash Error response from daemon: Multiple IDs found with provided prefix: 00c5 [[email protected] overlay2]#
查找pod
# kubectl get pod --all-namespaces|grep cleanxxb68555b5 cloudservice boosxxb5-255pv 2/2 Running 0 414d cloudservice boosxx5-z9m6b 2/2 Running 0 414d
find / -name "*log"