根據容器存儲目錄查找對應容器

 

需求以及方案:容器存儲目錄磁盤使用率過高,但是不知道是哪個容器佔用的,有大日誌,也不好清楚。此時使用du -sh定義到大文件,然後根據路徑找到容器,然後在k8s主節點進入這個容器,進行日誌處理,釋放磁盤空間

 

 

overlay2下查看目錄對應哪個容器

 

在Docker中,Overlay2是一個存儲驅動,用於管理容器的文件系統層。當你想在Overlay2目錄下查看某個目錄對應的容器時,可以按照以下步驟操作:

  1. 首先,你需要進入/var/lib/docker/overlay2目錄。這個目錄包含了所有容器的文件系統層。

bash複製代碼
  cd /var/lib/docker/overlay2/
  1. 在Overlay2目錄下,你可以使用du命令來查看各個目錄佔用的磁盤空間大小,並找出佔用空間最大的目錄。例如:

bash複製代碼
  du -s ./* | sort -rn | more

這個命令會顯示每個目錄的大小,並按照從大到小的順序排序。

  1. 當你找到了佔用空間較大的目錄後,可以使用docker ps -q | xargs docker inspect命令來查找對應的容器。你需要將上一步中找到的目錄名作爲參數傳遞給grep命令,以過濾出與該目錄相關的容器信息。例如,如果你的目錄名是bff25099a59b0fc8addd06f9223872f2904256f0432b3c3c47b58faef167115f,那麼你可以執行以下命令:

bash複製代碼
  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"

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章