반응형


도커(Docker) 볼륨 용량 초과 이슈

 

Docker를 사용하면서, 볼륨에서 실제 사용하고 있는 크기보다 더 용량을 많이 잡아먹는 경우가 있다.

이러한 경우에 가장 우선적으로 확인해야하는 사항에 대해 알아보았다.

 

 

용량 현황 확인


docker info | grep "Docker Root Dir"

 

위 명령어를 사용하면, Docker의 루트 디렉터리를 알 수 있다.

해당 디렉터리로 접근한 뒤,

du -sh *을 사용하여 어떤 파일의 용량이 가장 큰지 확인해야한다.

 

Overlay2가 가장 용량이 클 경우


일반적으로 overlay2의 용량이 가장 큰 경우, 

가장 먼저 의심해 볼 사항은 백업과 같은 역할을 수행하기 위해서, 컨테이너 내부 파일 구조의 변경 사항을 기록하는 /diff/tmp 폴더에 용량이 매우 큰 파일들이 존재하는 경우가 많다.

 

du -sh */diff/tmp |sort -nr

 

위 명령어를 통해, 

용량을 가장 많이 차지하고 있는 컨테이너 디렉터리를 찾은 후, 

 

내부에 있는 diff/tmp 파일에서 비정상적으로 용량이 큰 파일을 삭제하는 방법을 취할 수 있다.

일반적으로 삭제했을 때, 동작에 문제가 생기지는 않았으나

만약의 경우를 대비해서 우선은 백업을 해둔 뒤, 삭제 후 정상작동 여부를 살피는 것을 추천한다.

 

Image와 컨테이너의 용량이 클 경우


docker image prune -all

 

위 명령어를 통해 사용하지 않는 컨테이너와 이미지 정보를 정리할 수 있다.

대부분의 경우 이를 통해 용량이 줄어드는 것을 확인할 수 있다.

 

Volumes의 용량이 클 경우


 

docker Volume은 일반적으로 컨테이너 내부에서 사용되는 파일들이 그대로 저장되어있는 장소이다.

이 때, 대부분의 유저들이 잘 모르고 있는 사항이 있는데,

 

리눅스와는 별도로, docker volume은 자체적으로 "휴지통"개념을 가지고 있어서,

파일을 삭제 했을 때 자동으로 Volumes 디렉터리 내부에 있는 .Trash 디렉터리로 옮기게 된다.

 

숨김파일이라서 확인이 어렵지만,

삭제한 파일들의 용량이 그대로 저 안에서 차지되고 있어서 실제로 내가 사용하는 파일의 용량은 700GB인데 

볼륨의 용량은 1.4TB가 넘어가는 상황이 발생할 수 있다.

 

이를 방지하기 위해서, .Trash 파일을 삭제해주어야 한다.

 

 

 

Volumes 폴더 내부의 모습, .Trash-0라는 파일이 존재한다.

 

 

du -h --max-depth=1

 

위 명령어를 통해 숨김파일을 포함한 모든 파일의 용량을 확인할 수 있는데,

.Trash-0 파일안에 무려 505G나 되는 용량의 파일이 존재함을 확인할 수 있다.

 

 

내부를 보게 되면, 삭제된 원본 파일이 저장된 files 디렉토리와 메타데이터를 담고있는 info 디렉터리가 있는데, files 내부를 보면 여태까지 삭제했던 온갖 데이터들이 그대로 저장되어 있는 것을 확인할 수 있다.

 

필자는 머신러닝 학습용 데이터를 삭제하는 일이 빈번하였으므로, 용량을 많이 차지할 수 밖에 없다.

 

rm -rf .Trash*

위 명령어를 통해 모든 .Trash 디렉터리를 삭제할 수 있고, 용량을 확보할 수 있다.

반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,