Docker Buildx를 사용하여 이미지를 계속 빌드하면 BuildKit Cache 데이터가 계속 쌓이게 됩니다.
Cache는 Docker 이미지 빌드 속도를 높여주는 중요한 기능이지만, 시간이 지나면 사용하지 않는 오래된 Cache가 남아 디스크 공간을 차지할 수 있습니다.
특히 다음과 같은 환경에서는 Cache 관리가 중요합니다.
- CI/CD 자동 빌드 서버
- 대규모 Docker 프로젝트
- 멀티 플랫폼 이미지 빌드
- 여러 버전 이미지 관리
디스크 공간이 부족해지면 새로운 이미지 빌드가 실패하거나 Docker 작업 전체 성능이 저하될 수 있습니다.
이때 사용하는 명령어가 바로 Docker Buildx Prune입니다.
Docker Buildx Prune은 사용하지 않는 BuildKit Cache를 삭제하여 디스크 공간을 확보하는 명령어입니다.
이번 글에서는 Docker Buildx Prune의 개념부터 기본 사용법, 옵션 활용, Cache 삭제 기준, 실무 운영 방법까지 자세히 알아보겠습니다.
Docker Buildx Prune이란 무엇인가?
Docker Buildx Prune은 BuildKit에서 사용하지 않는 빌드 Cache를 제거하는 명령어입니다.
삭제 대상:
- 사용하지 않는 Build Cache
- 오래된 빌드 Layer
- 불필요한 중간 데이터
유지되는 항목:
- 현재 사용 중인 이미지
- 실행 중인 컨테이너
- Docker 볼륨
즉, Docker 전체 데이터를 삭제하는 것이 아니라 빌드 과정에서 생성된 불필요한 Cache만 정리합니다.
Docker Buildx Prune은 언제 사용하는가?
다음과 같은 상황에서 사용합니다.
- 디스크 공간 부족
- Build Cache 증가
- CI/CD 서버 정리
- 오래된 빌드 데이터 제거
- Docker 빌드 성능 관리
특히 장기간 운영하는 Docker 서버에서는 정기적인 Cache 정리가 필요합니다.
Docker Buildx Prune 기본 사용법
가장 기본적인 명령어입니다.
docker buildx prune
실행하면 삭제 가능한 Cache 목록을 확인한 후 삭제합니다.
출력 예:
WARNING! This will remove all unused build cache.
Are you sure you want to continue?
확인 후 진행합니다.
강제로 Cache 삭제하기
확인 메시지 없이 삭제하려면:
docker buildx prune -f
CI/CD 자동화 스크립트에서 주로 사용합니다.
사용하지 않는 Cache 전체 삭제하기
모든 불필요한 Cache를 제거합니다.
docker buildx prune --all
강력한 정리 옵션입니다.
사용하지 않는 Cache까지 모두 삭제할 수 있습니다.
특정 기간 이전 Cache 삭제하기
오래된 Cache만 정리할 수 있습니다.
예:
docker buildx prune --filter until=24h
24시간 이상 사용하지 않은 Cache를 제거합니다.
다른 예:
docker buildx prune --filter until=168h
7일 이상 지난 Cache를 정리합니다.
Cache 삭제 전 용량 확인하기
삭제 전에 현재 사용량을 확인합니다.
docker buildx du
출력:
SIZE
20GB
정리 후:
docker buildx du
사용량 감소 여부를 확인할 수 있습니다.
Docker Buildx Prune과 Docker System Prune 차이
두 명령어는 삭제 범위가 다릅니다.
Docker Buildx Prune
삭제:
- BuildKit Cache
- 빌드 Layer Cache
명령:
docker buildx prune
Docker System Prune
삭제:
- 중지된 컨테이너
- 사용하지 않는 이미지
- 네트워크
- 일부 Cache
명령:
docker system prune
빌드 Cache만 정리하려면 Buildx Prune이 적합합니다.
Docker Buildx Prune 실무 활용 예제
CI/CD 서버 자동 Cache 정리
매일 빌드가 실행되는 서버에서는 Cache가 빠르게 증가합니다.
확인:
docker buildx du
정리:
docker buildx prune \
--filter until=72h \
-f
3일 이상 사용하지 않은 Cache만 자동 삭제합니다.
디스크 부족 문제 해결
서버 확인:
df -h
결과:
/dev/sda1 95% used
Build Cache 확인:
docker buildx du
결과:
Build Cache 40GB
정리:
docker buildx prune -a -f
불필요한 Cache를 제거하여 공간을 확보합니다.
Linux 서버 문제 해결
운영 서버에서 Docker 이미지 빌드가 실패했습니다.
오류:
no space left on device
먼저 디스크 상태를 확인했습니다.
df -h
확인 결과 Docker 관련 데이터가 대부분의 공간을 사용하고 있었습니다.
Build Cache 확인:
docker buildx du
결과:
Build Cache
35GB
오래된 빌드 Cache가 원인이었습니다.
관리자는 오래된 Cache만 정리했습니다.
docker buildx prune \
--filter until=168h \
-f
정리 후:
docker buildx du
Cache 사용량이 감소했고 이미지 빌드가 정상적으로 진행되었습니다.
Docker Buildx Prune은 디스크 부족 문제를 해결하는 가장 효과적인 Docker 빌드 환경 관리 방법 중 하나입니다.
Docker Buildx Prune 사용 시 주의사항
첫 번째는 삭제한 Cache는 복구할 수 없습니다.
두 번째는 너무 자주 전체 삭제하면 이후 빌드 속도가 느려질 수 있습니다.
세 번째는 운영 서버에서는 --filter 옵션으로 오래된 Cache만 삭제하는 것을 권장합니다.
네 번째는 삭제 전에 docker buildx du로 사용량을 확인하는 것이 좋습니다.
Best Practice
Docker Buildx Prune을 사용할 때는 다음 방법을 추천합니다.
- 정기적으로 Cache 사용량을 확인합니다.
- 오래된 Cache 위주로 삭제합니다.
- CI/CD 환경에서는 자동 정리 정책을 적용합니다.
- 중요한 빌드 Cache는 유지합니다.
- 삭제 전 Buildx Du로 확인합니다.
- 디스크 부족 전에 관리합니다.
자주 묻는 질문
Docker Buildx Prune은 이미지를 삭제하나요?
아닙니다.
빌드 Cache만 삭제합니다.
Cache를 삭제하면 Docker 빌드가 느려지나요?
처음 빌드할 때는 Cache가 없어 시간이 증가할 수 있습니다.
Docker System Prune과 어떤 차이가 있나요?
Buildx Prune은 Build Cache만, System Prune은 Docker 전체 미사용 리소스를 정리합니다.
자동으로 실행할 수 있나요?
가능합니다.
CI/CD 스케줄 작업으로 정기 실행할 수 있습니다.
마무리
Docker Buildx Prune은 BuildKit Cache를 관리하고 디스크 공간을 확보하는 핵심 명령어입니다.
Docker 이미지를 지속적으로 빌드하는 환경에서는 Cache가 빠르게 증가하기 때문에 정기적인 점검과 정리가 필요합니다.
특히 docker buildx du로 사용량을 확인한 후 필요한 Cache만 정리하면 빌드 속도와 디스크 공간을 균형 있게 관리할 수 있습니다.
효율적인 Docker 운영을 위해 Buildx Prune을 활용하여 깨끗하고 안정적인 빌드 환경을 유지하는 것이 중요합니다.