Docker Build Cache 사용법 완벽 가이드! Docker 빌드 캐시 관리하기

Docker 이미지를 반복적으로 빌드하다 보면 같은 작업을 계속 수행하는 것처럼 보이지만 실제로는 Docker가 이전 빌드 결과를 저장하고 재사용합니다.

이 기능이 바로 Docker Build Cache입니다.

Build Cache는 Dockerfile의 각 단계(Layer)를 저장해두고, 변경되지 않은 단계는 다시 실행하지 않고 기존 결과를 재사용하는 기능입니다.

이를 통해 Docker 이미지 빌드 시간을 크게 줄일 수 있습니다.

하지만 시간이 지나면 사용하지 않는 Build Cache가 계속 쌓이게 되고, 수 GB 이상의 디스크 공간을 차지하는 경우도 발생합니다.

특히 CI/CD 서버에서는 하루에도 수십 번씩 이미지를 빌드하기 때문에 Build Cache 관리가 매우 중요합니다.

이번 글에서는 Docker Build Cache의 개념부터 캐시 확인 방법, 삭제 방법, 최적화 방법, 실무 활용까지 자세히 알아보겠습니다.

Docker Build Cache란 무엇인가?

Docker Build Cache는 Docker 이미지 빌드 과정에서 생성되는 중간 결과물을 저장하는 기능입니다.

Dockerfile은 여러 개의 Layer로 구성되며, 각 명령어 실행 결과가 캐시로 저장됩니다.

예:

FROM node:22

WORKDIR /app

COPY package.json .

RUN npm install

COPY . .

CMD ["npm", "start"]

빌드 과정:

FROM node:22
        ↓
WORKDIR /app
        ↓
COPY package.json
        ↓
RUN npm install
        ↓
COPY source code

각 단계가 하나의 Layer로 저장됩니다.

다음 빌드에서 변경되지 않은 단계는 캐시를 재사용합니다.

Docker Build Cache는 언제 사용하는가?

다음과 같은 상황에서 활용됩니다.

  • Docker 이미지 빠른 재빌드
  • CI/CD 빌드 속도 개선
  • 개발 환경 최적화
  • 반복적인 이미지 생성
  • 서버 빌드 시간 단축

Docker를 사용하는 대부분의 프로젝트에서 기본적으로 활용됩니다.

Docker Build Cache 확인하기

현재 Build Cache 사용량을 확인합니다.

docker system df

출력 예:

TYPE            SIZE
Build Cache     8.5GB

Build Cache가 얼마나 디스크를 사용하고 있는지 확인할 수 있습니다.

상세 Build Cache 확인하기

더 자세한 정보를 확인하려면:

docker system df -v

이미지와 Build Cache 상세 정보를 확인할 수 있습니다.

Docker Build Cache 사용 확인하기

이미지를 다시 빌드합니다.

docker build -t my-app .

출력:

Step 1/5 : FROM node:22
 ---> Using cache

Step 2/5 : RUN npm install
 ---> Using cache

Using cache가 표시되면 기존 Layer를 재사용하고 있다는 의미입니다.

캐시 없이 이미지 빌드하기

기존 Cache를 사용하지 않고 새롭게 빌드하려면:

docker build --no-cache -t my-app .

모든 Dockerfile 단계를 다시 실행합니다.

사용 상황:

  • 패키지 최신 버전 적용
  • 환경 문제 해결
  • 빌드 오류 분석

Docker Build Cache 삭제하기

사용하지 않는 Build Cache를 삭제하려면:

docker builder prune

삭제 전 확인 메시지가 표시됩니다.

즉시 삭제:

docker builder prune -f

불필요한 Build Cache를 제거하여 디스크 공간을 확보합니다.

모든 Build Cache 삭제하기

사용 가능한 모든 캐시를 삭제하려면:

docker builder prune -a

확인 없이 실행:

docker builder prune -a -f

오래된 캐시까지 모두 제거합니다.

Docker Build Cache 실무 활용 예제

Docker Build Cache는 이미지 빌드 시간을 줄이고 CI/CD 환경의 성능을 높이는 핵심 기능입니다.

특히 소스 코드 변경이 잦은 프로젝트에서는 Cache 활용 여부에 따라 빌드 시간이 크게 달라질 수 있습니다.

Build Cache 사용하여 빠르게 재빌드하기

기존 이미지 빌드:

docker build -t web-app:v1 .

소스 코드만 변경 후 다시 빌드:

docker build -t web-app:v2 .

출력:

Step 1/5 : FROM node:22
 ---> Using cache

Step 2/5 : RUN npm install
 ---> Using cache

Step 3/5 : COPY .
 ---> Running

변경되지 않은 Layer는 Cache를 재사용하여 빠르게 완료됩니다.

Dockerfile Cache 최적화하기

잘못된 Dockerfile 구조는 Cache 효율을 떨어뜨립니다.

비효율적인 예:

COPY . .

RUN npm install

소스 코드가 조금만 변경되어도 npm install 단계가 다시 실행됩니다.

개선된 예:

COPY package.json .

RUN npm install

COPY . .

패키지 파일이 변경되지 않는다면 설치 Layer를 재사용할 수 있습니다.

CI/CD 환경에서 Cache 활용하기

GitHub Actions, Jenkins 같은 CI/CD 환경에서는 매번 새롭게 빌드하기 때문에 Cache 관리가 중요합니다.

예:

docker build \
--cache-from my-app:latest \
-t my-app:new .

기존 이미지를 Cache로 활용하여 빌드 시간을 줄일 수 있습니다.

특정 Cache 삭제하기

불필요한 Cache를 정리합니다.

docker builder prune

삭제 가능한 Cache 목록 확인 후 정리됩니다.

강제 삭제:

docker builder prune -f

자동 유지보수 작업에서 사용할 수 있습니다.

오래된 Cache만 삭제하기

기간을 지정하여 정리할 수 있습니다.

예:

docker builder prune --filter until=72h

72시간 이상 사용하지 않은 Cache를 삭제합니다.

운영 서버에서는 전체 삭제보다 안전한 방법입니다.

Build Cache 용량 확인하기

현재 Cache 사용량 확인:

docker system df

상세 확인:

docker system df -v

Build Cache가 많은 공간을 차지한다면 정리 작업이 필요합니다.

Linux 서버 문제 해결

CI/CD 서버에서 Docker 이미지 빌드 시간이 점점 느려지는 문제가 발생했습니다.

처음에는 3분이면 완료되던 빌드가 20분 이상 걸리는 상황이 발생했습니다.

관리자는 먼저 Docker 디스크 사용량을 확인했습니다.

docker system df

확인 결과:

Build Cache     45GB

Build Cache가 과도하게 쌓인 상태였습니다.

상세 내용을 확인했습니다.

docker system df -v

오래된 프로젝트의 Cache가 대부분을 차지하고 있었습니다.

사용하지 않는 Cache를 정리했습니다.

docker builder prune -f

정리 후 다시 확인했습니다.

docker system df

디스크 공간이 확보되었고 CI/CD 빌드 속도도 정상적으로 회복되었습니다.

Docker Build Cache는 빌드 속도를 높이는 중요한 기능이지만, 주기적인 관리가 필요합니다.

Docker Build Cache 사용 시 주의사항

Docker Build Cache를 사용할 때는 다음 사항을 확인해야 합니다.

첫 번째는 Cache 삭제 시 다음 빌드 시간이 증가할 수 있다는 점입니다.

삭제 후에는 Layer를 다시 생성해야 합니다.

두 번째는 운영 환경에서는 무조건 전체 삭제하는 것보다 오래된 Cache만 정리하는 것이 좋습니다.

세 번째는 Dockerfile 순서가 Cache 효율에 큰 영향을 줍니다.

변경이 적은 명령을 위쪽에 배치하는 것이 좋습니다.

네 번째는 CI/CD 환경에서는 Cache 저장 전략을 별도로 구성하는 것이 좋습니다.

Best Practice

Docker Build Cache를 효율적으로 관리하려면 다음 방법을 추천합니다.

  • Dockerfile Layer 순서를 최적화합니다.
  • .dockerignore를 활용합니다.
  • 정기적으로 Cache 사용량을 확인합니다.
  • 오래된 Cache만 선택적으로 삭제합니다.
  • CI/CD Cache 전략을 구성합니다.
  • 운영 서버에서는 삭제 전 사용량을 확인합니다.

이러한 방법을 적용하면 빠르고 안정적인 Docker 빌드 환경을 유지할 수 있습니다.

자주 묻는 질문

Docker Build Cache는 삭제해도 되나요?

가능합니다.

다만 삭제 후 다음 빌드는 Cache가 없어 더 오래 걸릴 수 있습니다.

Build Cache와 Docker Image는 같은 것인가요?

아닙니다.

Image는 실행 가능한 결과물이고, Build Cache는 이미지 생성 과정의 임시 Layer 데이터입니다.

Cache를 많이 사용하면 문제가 되나요?

디스크 공간을 계속 차지할 수 있으므로 주기적인 관리가 필요합니다.

가장 안전한 Cache 삭제 방법은 무엇인가요?

docker builder prune --filter until=72h처럼 오래된 Cache만 정리하는 방법이 안전합니다.

마무리

Docker Build Cache는 이미지 빌드 시간을 줄이고 개발 및 배포 효율을 높여주는 핵심 기능입니다.

변경되지 않은 Dockerfile Layer를 재사용하여 빠른 빌드를 가능하게 하지만, 장기간 사용하면 불필요한 Cache가 쌓여 디스크 공간을 차지할 수 있습니다.

따라서 docker system df로 사용량을 확인하고, docker builder prune을 활용하여 주기적으로 관리하는 것이 중요합니다.

특히 운영 환경에서는 Dockerfile 구조 최적화와 선택적인 Cache 정리를 함께 적용하면 더욱 빠르고 안정적인 Docker 운영이 가능합니다.

댓글 남기기