[Docker] 도커 볼륨(Volume) 용량 초과 이슈 해결방법

▶︎ 개요

현재 waytothem 사이트 운영 중 도커 볼륨의 용령이 너무 커져서 그 원인에 대해 파악해보고자 한다.

우선적으로 확인해야 되는 사항

  • 도커 루트 파일시스템의 용량 현황확인
  • Overlay2 파일시스템의 용량이 가장 큰 경우
  • Volumes의 용량이 가장 큰 경우

▶︎ 도커 저장 경로 찾기

도커 데이터가 어느 경로에 저장 되는지 docker info 명령어를 활용하여 도커 루트 디렉토리를 찾아보자

$ docker info | grep -i "docker root dir"

Docker Root Dir: /var/lib/docker

‣ 용량 큰 놈 찾기

$ du -sh *

4.0K	2021-12-17-my-first-post.md
4.0K	2022-03-30-docker-volume-fulll-issue.md
 12K	2022-05-12-python-coupang-review-crawling.md
4.0K	2022-08-23-docker-nextcloud.md
8.0K	2022-09-12-docker-volume-container.md
4.0K	2022-09-25-docker-compose-http-file-server.md
4.0K	2023-02-01-docker-print-format.md
4.0K	2023-02-17-docker-compose-static-ip.md
8.0K	2023-02-17-docker-compose-web-db-nfs.md
4.0K	2023-02-28-algorithm-1.md
4.0K	2023-02-28-bash-project-1.md
4.0K	2023-02-28-database-1.md
8.0K	2023-02-28-git-pull-request.md
8.0K	2023-02-28-git-repository-commit.md
4.0K	2023-02-28-js-1.md
4.0K	2023-02-28-k8s-1.md
8.0K	2023-02-28-python-paramiko-ssh-config.md
4.0K	2023-02-28-vm-ubuntu-setting.md
4.0K	2023-03-01-git-conflict-solve.md
 12K	2023-03-02-create-https-container-1.md
 12K	2023-03-02-naverapi-crawling-image.md
 16K	_site
$ du -h --max-depth=1 2>/dev/null

‣ overlay2

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

/var/lib/docker/overlay2/yxkyzwgsdja0vch7r05f7drdk

$ du -sh */diff/ | sort -k 1 -nr

image

-> 위 명령어를 통해 용량을 가장 많이 차지하고 있는 컨테이너 디렉토리 찾은 후 , 내부에 있는 /var/lib/docker/overlay2/<컨테이너폴더>diff/tmp에서
비정상적으로 용량이 큰 파일을 삭제하면 된다. 혹시 모르니 백업을 해두는 것은 필수


‣ 이미지,컨테이너 용량

  • 이미지와 컨테이너의 용량이 큰 경우
  • docker volume은 일반적으로 컨테이너 내부에서 사용되는 파일들이 그대로 저장되어있는 장소이다
  • 리눅스와는 별도로 docker volume은 자체적으로 “휴지통” 개념을 가지고 있어, 파일을 삭제 했을 때 자동으로 Volumes 디렉터리 내부에 .Trash 디렉터리로 옮기게 됨.

image

-> 나는 현재 도커 이미지를 삭제 할 일이 거의 없으므로 , .Trash 파일이 없다.

.Trash파일이 존재하는 경우 rm -rf .Trash* 명령으로 날려주면 된다


▶︎ 번외

‣ 도커 사용량 확인

$ docker system df

‣ 도커 시스템 정리

(이미지 , 컨테이너, 네트워크 정리) (사용하지 않는 모든 컨테이너,모든 활성 볼륨 제거)

$ docker system prune <<< y

‣ 도커 이미지 정리

  • 하나 이상의 컨테이너와 연관된 모든 이미지 삭제
$ docker image prune -a

‣ 도커 컨테이너 정리

  • 중지된 컨테이너만 삭제
$ docker container prune

‣ 도커 볼륨 정리

  • 사용하지 않는 볼륨 제거
$ docker volume prune

$ docker volume remove $(docker volume ls | awk '{print $2}' | grep -v "[A-Z]")

관련 글

지식 공유2분 읽기

[Docker] 컨테이너(Container)에 할당되는 CPU 제한하기

개요 이번 게시글에서는 도커 컨테이너에서 CPU를 최적으로 활용하는 방법에 대해서 기록해보려고 한다. 호스트 CPU Core 정보 확인 먼저 컨테이너에 CPU를 최적으로 할당하기 위해서는, 현재 호스트 시스템의 CPU 정보에 대해서...

도커
지식 공유1분 읽기

[Docker] 배그 최고급 꾸러기 시뮬레이터 배포

개요 최고급 꾸러미에 대한 확률 체감을 위한 시뮬레이터 프로그램을 구현하고 도커로 배포하였음. 배포 로직은 AWS EC2 인스턴스에 도커를 사용하여 nginx proxy manager를 배포하고 리버스 프록시로 홈 서버에 있는 시뮬레...

도커