Docker에서 ‘no space left on device’ 에러가 발생했을 때 다음과 같은 방법으로 대처할 수 있습니다
디스크 공간 확보하기
- 사용하지 않는 Docker 리소스 정리
docker system prune -a
이 명령어는 중지된 컨테이너, 사용되지 않는 네트워크, 댕글링 이미지, 빌드 캐시 등을 모두 제거합니다.
- 볼륨까지 포함하여 정리
docker system prune -a --volumes
사용되지 않는 볼륨까지 함께 제거합니다.
- 개별 리소스 정리:
- 이미지 정리:
docker image prune -a
- 컨테이너 정리:
docker container prune
- 볼륨 정리:
docker volume prune
Docker 저장소 위치 변경
- 현재 Docker 루트 디렉토리 확인
docker info -f '{{ .DockerRootDir }}'
- 새로운 저장소 위치 생성 및 기존 데이터 복사
mkdir -p /new/docker/path
rsync -aP /var/lib/docker /new/docker/path
- Docker 데몬 설정 파일 수정
sudo nano /etc/docker/daemon.json
{
"data-root": "/new/docker/path"
}
- Docker 서비스 재시작
sudo systemctl restart docker
모니터링 및 예방
- 정기적으로
docker system df
명령어로 사용량 확인 - 크론 작업으로 주기적 정리 스크립트 실행
- 로그 로테이션 설정으로 로그 파일 크기 제한
파일시스템 확장
호스트 시스템의 파일시스템 크기를 늘리는 것도 고려할 수 있습니다. 파티션이나 LVM을 사용하여 Docker 저장소가 있는 파일시스템의 크기를 확장합니다.
이러한 방법들을 통해 Docker의 디스크 공간 부족 문제를 해결하고 예방할 수 있습니다. 정기적인 모니터링과 정리를 통해 장기적으로 안정적인 Docker 환경을 유지할 수 있습니다.
참고
- https://docs.docker.com/engine/manage-resources/pruning/
- https://betterstack.com/community/questions/how-to-fix-no-space-left-on-divec-docker-error/
- https://supportfly.io/docker-no-space-left-on-device/
- https://middleware.io/blog/docker-cleanup/
- https://dev.to/yuvraajsj18/how-to-fix-docker-no-space-left-on-device-error-co7
- https://forums.docker.com/t/docker-no-space-left-on-device/69205
- https://devtodevops.com/fix-no-space-left-on-device-docker/
- https://www.freecodecamp.org/news/how-to-remove-all-docker-images-a-docker-cleanup-guide/