根据容器存储目录查找对应容器

 

需求以及方案:容器存储目录磁盘使用率过高,但是不知道是哪个容器占用的,有大日志,也不好清楚。此时使用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"

 

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