본문 바로가기
[AWS-FRF]/CICD

[docker builder prune] Docker 빌드 캐시(build cache) 및 중간 이미지 정리!!

by METAVERSE STORY 2025. 10. 29.
반응형

 

 

docker builder prune 명령어는 Docker 빌드 캐시(build cache)중간 이미지를 정리(clean up)하기 위한 도구입니다.
Docker를 오랫동안 사용하다 보면 빌드 과정에서 생성된 중간 캐시 레이어빌드 관련 데이터가 쌓여 디스크 용량을 많이 차지하게 되는데, 이 명령어가 바로 그걸 정리해줍니다.

 


🧱 1. 기본 개념

🔹 명령어 형식

 
docker builder prune [OPTIONS]

🔹 역할

Docker는 이미지를 빌드할 때 **빌드 캐시(Build Cache)**를 사용합니다.
이는 각 단계(Layer)의 결과를 저장해두어, 같은 단계가 다시 실행될 때 시간을 절약하기 위함입니다.

하지만, 프로젝트 변경이 잦거나 이미지가 자주 빌드되면 이 캐시가 쌓이면서 수 GB 단위의 공간을 차지하게 됩니다.
docker builder prune 명령은 이런 불필요한 캐시를 정리합니다.


🧹 2. 주요 옵션 정리

옵션 설명
-a, --all 모든 빌드 캐시를 삭제 (현재 사용 중인 캐시도 포함)
-f, --force 사용자에게 확인 없이 강제 삭제
--filter 특정 조건에 맞는 캐시만 삭제 (예: 기간, ID 등)
--keep-storage 지정한 용량(바이트 단위)만큼은 유지하고 나머지를 삭제
--verbose 삭제되는 캐시 정보를 자세히 출력

🧩 3. 사용 예시

✅ (1) 기본 캐시 정리

 
docker builder prune
  • 사용되지 않는 빌드 캐시만 정리합니다.
  • 명령 실행 시 확인 메시지가 표시됩니다:
  •  
    WARNING! This will remove all dangling build cache. Are you sure you want to continue? [y/N]

✅ (2) 모든 캐시 완전 삭제

 
docker builder prune -a
  • 현재 사용 중인 빌드 캐시까지 모두 삭제합니다.
  • 디스크 용량 확보에는 효과적이지만, 이후 빌드시 캐시가 전혀 없어 빌드 속도가 느려질 수 있습니다.

✅ (3) 강제 실행 (확인 없이)

 
docker builder prune -af
  • -a : 모든 캐시 제거
  • -f : 사용자 확인 없이 바로 실행
  • 💡 자동화 스크립트나 CI/CD 환경에서 자주 사용됩니다.

✅ (4) 오래된 캐시만 삭제

 
docker builder prune --filter until=24h
  • 24시간 이상 된 캐시만 정리합니다.
  • until 필터에는 h, m, d 단위 사용 가능
    • 예: until=72h → 3일 이상된 캐시 삭제

✅ (5) 디스크 사용량 제한

 
docker builder prune --keep-storage 20GB
  • 총 빌드 캐시 용량이 20GB를 초과하면 오래된 캐시부터 삭제합니다.
  • 자동 캐시 관리용 옵션으로, CI 서버나 Jenkins 환경에서 유용합니다.

📦 4. 빌드 캐시란?

Dockerfile의 각 명령은 하나의 “레이어(layer)”를 만듭니다.
예를 들어:

 
FROM ubuntu RUN apt update && apt install -y python3 COPY . /app RUN python3 setup.py install

이때, 각 RUN, COPY 단계의 결과가 캐시로 저장됩니다.
다음번 빌드 때 동일한 단계가 있다면, 이미 저장된 캐시를 재활용합니다.

하지만,

  • Dockerfile 변경
  • 베이스 이미지 변경
  • 소스 코드 변경
    등이 자주 일어나면, 이 캐시들이 쌓여서 디스크 공간을 낭비하게 됩니다.

⚠️ 5. 주의사항

주의 포인트 설명
⚡ 빌드 속도 저하 -a 옵션으로 캐시를 모두 지우면 다음 빌드시 모든 단계가 새로 실행되어 느려집니다.
📂 이미지/컨테이너는 영향 없음 docker image prune이나 docker system prune과 달리, 실제 이미지나 컨테이너는 삭제하지 않습니다.
🧰 BuildKit 캐시 포함 Docker 18.09 이후에는 BuildKit 캐시도 이 명령으로 관리됩니다. (DOCKER_BUILDKIT=1)

🔍 6. 디스크 공간 확인 및 관리 예시

 
# 현재 빌드 캐시 확인 docker builder du # 빌드 캐시 상세 출력 docker system df -v # 모든 불필요한 데이터(이미지, 컨테이너, 네트워크 포함) 제거 docker system prune -af

🧠 7. 실무 활용 팁

  • 개발용 로컬 환경→ 1일 이상된 빌드 캐시만 정리 (빌드 속도 유지 + 디스크 확보)
  •  
    docker builder prune -af --filter until=24h
  • CI/CD 서버→ 일정 용량 이상 쌓이면 오래된 캐시를 자동으로 정리
  •  
    docker builder prune -af --keep-storage 10GB
  • 빌드 후 자동 정리 스크립트 예시
  •  
    #!/bin/bash docker build -t myapp:latest . docker builder prune -af --filter until=12h

🧾 정리

명령어 기능 요약
docker builder prune 사용되지 않는 빌드 캐시 제거
docker builder prune -a 모든 캐시 제거
docker builder prune --filter until=24h 24시간 이상된 캐시만 삭제
docker builder prune --keep-storage 10GB 캐시 용량이 10GB 넘으면 오래된 것부터 삭제
docker builder du 빌드 캐시 용량 확인

 

 

 

반응형

댓글