728x90
문제 상황
배포를 위해 jar 파일을 통한 도커 이미지 빌드 과정에서 에러가 발생했다.
'failed to prepare ... : no space left on device"
문제 원인
서버 디스크의 용량이 부족함을 확인했다. 어디가 꽉 찬건지 확인해보자.
문제 해결 과정
우선 df -h로 파티션 체크를 해본다.
# 파티션 체크
$ df -h
이어서 df -i로 inode 값을 체크한다.
Inodes: Index Node의 줄임말로, 파일에 대한 메타데이터를 저장한다.
파일의 소유자 ,그룹, 권한 크기, 생성 시간, 마지막 수정 시간 등의 정보를 가지며,
디렉토리나 파일의 식별자 역할을 한다.
# inodes 체크
$ df -i
절대적으로 /dev/xvda3 예하의 특정 디렉토리가 가득 차서 문제가 생겼음을 확인했다.
이하의 명령어를 통해 어느 부분에서 용량을 차지하고 있는지 조회한다.
- for i in [경로]; do echo $i; find $i | wc -l; done
# 예시 : - for i in /*; do echo $i; find $i | wc -l; done
/var에 가장 용량을 차지하고 있는 비중이 많음을 확인했다.
다시 한번 하위의 폴더를 상기 명령어로 검사하며 문제의 원인을 탐색한다.
- for i in [경로]; do echo $i; find $i | wc -l; done
# 예시 : - for i in /*; do echo $i; find $i | wc -l; done
~ 타고 들어가는중
var/lib/docker/vfs/dir 예하의 사용하지 않는 볼륨, 컨테이너, 빌드 레이어들이 많이 저장되어 있었고
이들이 쌓여 문제를 일으키고 있던 것이다.
아래의 명령어를 통해 도커 시스템에서 사용하지 않는 모든 리소스를 정리하자.
docker system prune -a --volumes
# --volumes는 볼륨도 같이 삭제하라는 뜻
위의 명령어를 통해 수행되는 작업은 아래와 같다.
- 사용하지 않는 불필요 이미지 삭제
- 사용하지 않는 불필요 컨테이너 삭제
- 사용하지 않는 네트워크 삭제
- 사용하지 않는 볼륨도 삭제
이 명령어는 도커 시스템의 디스크 공간을 최적화하고 리소스를 정리하는데 유용하다.
그러나 필요한 리소스가 아닌지 반드시 확인한 후에 사용하자.
정리 이후 df-ih를 통해 디스크내 inode와 용량 차지 비율을 다시 확인해보자.
df -ih
결론
- 문제 원인 : 과도한 이미지 빌드로 인해 불필요 리소스와 Inode가 많이 쌓여있었음
- 해결 방법 : docker system prune -a --volumes 로 불필요 리소스를 정기적으로 제거
'DEV > Infrastructure' 카테고리의 다른 글
[AWS] IAM, VPC의 개념, AWS CLI 설치, 엑세스 코드 발급 (0) | 2024.02.22 |
---|---|
[NCP, Docker, Github Actions] 를 활용한 CI / CD 구축 (4) | 2024.01.09 |
[NCP, 도커] 서버 생성부터 배포까지 (4 / 4) (1) | 2024.01.08 |
[NCP, 도커] 서버 생성부터 배포까지 (3 / 4) (0) | 2024.01.07 |
[NCP, 도커] 서버 생성부터 배포까지 (2 / 4) (0) | 2024.01.02 |