MariaDB 컨테이너를 Docker COmpose로 실행하려 했으나, 아래와 같은 에러 메시지와 함께 실행되지 않았습니다.
db-1 | 2024-08-28 9:01:35 0 [ERROR] mariadbd: Error writing file './ddl_recovery.log' (Errcode: 28 "No space left on device")
우선 Docker VM에 할당된 디스크 공간이 어떻게 사용중인지 확인해보겠습니다.
docker exec [컨테이너 이름] df -h
확인해보니 Docker VM에 할당된 디스크 공간이 모두 사용 중인 것을 확인하였습니다.
Filesystem Size Used Avail Use% Mounted on
overlay 59G 58G 0 100% /
tmpfs 64M 0 64M 0% /dev
shm 64M 0 64M 0% /dev/shm
/dev/vda1 59G 58G 0 100% /etc/hosts
tmpfs 2.0G 0 2.0G 0% /sys/firmware
디스크 공간이 부족한 이유를 알아보기 위하여 Docker 시스템 전체의 리소스 사용 현황을 확인해보겠습니다.
docker system df
확인 결과 Build Cache가 가장 많은 공간을 차지하고 있었습니다.
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 11 8 3.492GB 2.537GB (72%)
Containers 29 15 362B 180B (49%)
Local Volumes 1 1 186.8MB 0B (0%)
Build Cache 424 0 20.27GB 20.27GB
Build Cache는 Docker 이전 빌드의 레이어를 재사용하여 빌드 시간을 단축시킵니다. 여태까지 다양한 프로젝트나 다른 버전의 이미지를 빌드할 때마다 누적된 캐시였습니다.
Reclaimable을 보니, 현재 활성화된 빌드 캐시가 없다는 것을 확인하였고, 사용하지 않는 빌드 캐시를 정리하였습니다.
docker builder prune
모든 Build Cache가 삭제되었음을 확인할 수 있었고
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 11 8 3.492GB 2.537GB (72%)
Containers 29 15 362B 180B (49%)
Local Volumes 1 1 186.8MB 0B (0%)
Build Cache 16 0 0B 0B
디스크 공간 재확인 결과 Docker VM의 사용할 수 있는 디스크 공간이 크게 증가하였음을 확인할 수 있었습니다.
Filesystem Size Used Avail Use% Mounted on
overlay 59G 6.1G 50G 11% /
tmpfs 64M 0 64M 0% /dev
shm 64M 0 64M 0% /dev/shm
/dev/vda1 59G 6.1G 50G 11% /etc/hosts
tmpfs 2.0G 0 2.0G 0% /sys/firmware