목차

오버레이 디스크 영역 사용률 증가

컨테이너를 기동하고 호스트에서 df -hP로 디스크 사용량을 조회하면 아래와 같이 출력된다.

root@manga:~# df -hP
Filesystem                   Size  Used Avail Use% Mounted on
udev                         3.9G     0  3.9G   0% /dev
tmpfs                        794M  1.3M  793M   1% /run
/dev/mapper/manga--vg-root    41G   30G  9.2G  77% /
tmpfs                        3.9G   84K  3.9G   1% /dev/shm
tmpfs                        5.0M     0  5.0M   0% /run/lock
/dev/mapper/vg_data-lv_data  2.0T  1.3T  613G  68% /data
shm                           63M     0   63M   0% /var/lib/containers/storage/overlay-containers/993892b32b7d04576891a09db000b360c2a56242c6b49dafd7bd9ec1b0ff1e25/userdata/shm
overlay                       41G   30G  9.2G  77% /var/lib/containers/storage/overlay/4bf99d6f5b2e2ecc807f64130f93287c14f4b806ac7689fc7bcc8eb9f1b15ac7/merged
shm                           63M     0   63M   0% /var/lib/containers/storage/overlay-containers/d7bf227bfefb9b0b03912b0babc268f9850439769e4617eb5310a09a20edd1f6/userdata/shm
overlay                       41G   30G  9.2G  77% /var/lib/containers/storage/overlay/a38810969c25a5561feb80513918ff50fe9aca6307d35355daff961fbdd4f000/merged
tmpfs                        794M   44K  794M   1% /run/user/0

이렇게 컨테이너의 오버레이 디스크 영역은 호스트의 영역을 공유하여 사용하게 되는데 오버레이 영역의 사용 용량이 점점 늘어나게 되는경우가 있는데 그런경우는 보통 아래와 같다

해결방법

사용하지 않는 컨테이너 및 이미지 제거

사용하지 않는 컨테이너나 이미지를 제거하여 디스크 공간을 확보할 수 있습니다.

# 중지된 모든 컨테이너 제거
docker container prune

# 사용하지 않는 모든 이미지 제거
docker image prune -a

# 사용하지 않는 네트워크와 볼륨도 정리 가능
docker network prune
docker volume prune

로그 관리

컨테이너의 로그 파일을 제한하거나 로그 파일을 주기적으로 삭제하는 스크립트를 설정할 수 있습니다.

# Docker 로그 파일 크기 제한 설정 예시
docker run --log-opt max-size=10m --log-opt max-file=3 <이미지 이름>

# 이미 실행 중인 컨테이너의 로그를 삭제할 수 있습니다.
truncate -s 0 $(docker inspect --format='{{.LogPath}}' <컨테이너 ID>)

디스크 사용량 확인 및 청소

docker system df 명령어로 Docker 디스크 사용량을 확인하여 어느 부분이 많은 용량을 차지하는지 확인할 수 있습니다.

root@manga:/var/log# podman system df
TYPE           TOTAL       ACTIVE      SIZE        RECLAIMABLE
Images         13          3           24.83GB     20.19GB (81%)
Containers     2           2           10.73GB     0B (0%)
Local Volumes  2           0           0B          0B (0%)

위의 경우 이미지에서 사용하는 용량이 증가되었으며 회수 가능한(RECLAIMABLE) 용량이 20.19GB가 됩니다.
이는 사용되지 않는 이미지나 불필요한 데이터와 캐시들이 디스크 공간을 차지하고 있다는 의미입니다.
해당 용량만큼 회수를 하려면 아래 명령어를 수행합니다.

1. 사용하지 않는 이미지 제거

podman image prune
podman image prune -a

2. 컨테이너 정리
중지된 컨테이너를 제거 합니다.

podman container prune

3. 시스템 전체 청소
시스템의 불필요한 데이터와 캐시를 모두 청소하려면 다음 명령어를 사용할 수 있습니다.

podman system prune -a

임시 파일 정리

컨테이너 내에서 불필요하게 생성된 임시 파일들을 정리해야 할 수 있습니다.

docker exec <컨테이너 ID> rm -rf /tmp/*