Docker Buildx Build –cache-to 사용법 완벽 가이드! 빌드 Cache 저장하기

Docker 이미지를 반복적으로 빌드하는 환경에서는 빌드 시간이 중요한 요소입니다.

특히 CI/CD 환경에서는 같은 이미지를 계속 생성하기 때문에 다음과 같은 문제가 발생할 수 있습니다.

  • 동일한 패키지 설치 반복
  • Docker Layer 재생성
  • 빌드 시간 증가
  • 서버 리소스 낭비

Docker Buildx는 이러한 문제를 해결하기 위해 Build Cache 기능을 제공합니다.

그중 --cache-to 옵션은 현재 빌드 과정에서 생성된 Cache를 외부 저장소에 저장하는 기능입니다.

예:

docker buildx build \
--cache-to type=registry,ref=company/app:cache \
-t company/app:v1 \
--push .

생성된 Build Cache를 Registry에 저장하여 다음 빌드에서 다시 사용할 수 있습니다.

이번 글에서는 Docker Buildx Build –cache-to의 개념부터 기본 사용법, Cache 저장 방식, Registry Cache 활용, CI/CD 최적화 방법까지 자세히 알아보겠습니다.

Docker Buildx Build –cache-to란 무엇인가?

--cache-to는 Docker Buildx 빌드 과정에서 생성되는 Cache 데이터를 저장하는 옵션입니다.

기본 형식:

docker buildx build \
--cache-to CACHE_EXPORTER .

동작 과정:

Dockerfile

↓

Docker Layer 생성

↓

Build Cache 생성

↓

외부 저장소 저장

저장된 Cache는 이후 --cache-from 옵션으로 가져와 사용할 수 있습니다.

Docker Build Cache란 무엇인가?

Docker 이미지는 여러 개의 Layer로 구성됩니다.

예:

FROM node:20

COPY package.json .

RUN npm install

COPY . .

빌드 결과:

Layer 1

Layer 2

Layer 3

Layer 4

변경되지 않은 Layer는 Cache로 저장되어 다음 빌드에서 재사용됩니다.

Docker Buildx Build –cache-to를 사용하는 이유

일반적인 빌드 환경:

docker buildx build \
-t app:v1 .

문제:

새로운 빌드 서버

↓

Cache 없음

↓

전체 빌드 실행

특히 CI/CD 환경에서는 매번 새로운 Runner에서 실행되기 때문에 Cache 저장이 중요합니다.

--cache-to를 사용하면:

빌드 완료

↓

Cache 저장

↓

다음 빌드 재사용

구조를 만들 수 있습니다.

Docker Buildx Build –cache-to 기본 사용법

예:

docker buildx build \
--cache-to type=local,dest=./cache \
-t app:v1 .

현재 서버 폴더에 Cache를 저장합니다.

Registry Cache 저장하기

운영 환경에서는 Registry Cache를 가장 많이 사용합니다.

예:

docker buildx build \
--cache-to type=registry,ref=company/app:cache \
-t company/app:v1 \
--push .

저장 위치:

Docker Registry

↓

company/app:cache

다음 빌드에서 가져올 수 있습니다.

Local Cache 저장하기

개발 환경에서는 로컬 Cache를 사용할 수 있습니다.

예:

docker buildx build \
--cache-to type=local,dest=/tmp/docker-cache \
-t app:v1 .

결과:

/tmp/docker-cache

폴더에 Cache 데이터가 저장됩니다.

Docker Buildx Build Cache Export 방식

대표적인 Cache 저장 방식:

방식설명
registryDocker Registry 저장
local로컬 디렉터리 저장
inline이미지 내부 저장
ghaGitHub Actions Cache 저장

Docker Buildx Build –cache-to와 –cache-from 함께 사용하기

가장 일반적인 구성입니다.

첫 번째 빌드:

docker buildx build \
--cache-to type=registry,ref=company/app:cache \
-t company/app:v1 \
--push .

Cache 저장:

company/app:cache

다음 빌드:

docker buildx build \
--cache-from type=registry,ref=company/app:cache \
--cache-to type=registry,ref=company/app:cache \
-t company/app:v2 \
--push .

기존 Layer를 재사용합니다.

Docker Buildx Build –cache-to 실무 활용 예제

CI/CD 빌드 속도 개선

기존:

docker buildx build \
-t company/app:v1 .

문제:

매번 dependency 설치

전체 Layer 생성

빌드 시간 증가

Cache 적용:

docker buildx build \
--cache-from type=registry,ref=company/app:cache \
--cache-to type=registry,ref=company/app:cache \
-t company/app:v1 \
--push .

효과:

  • 빌드 시간 감소
  • CI 비용 절감
  • 반복 작업 감소

GitHub Actions Cache 활용

예:

- name: Build Docker Image
  run: |
    docker buildx build \
    --cache-from type=gha \
    --cache-to type=gha \
    -t app:v1 .

GitHub Actions 환경에 Cache를 저장할 수 있습니다.

Linux 서버 문제 해결

CI 서버에서 Docker 빌드 시간이 너무 오래 걸렸습니다.

기존:

docker buildx build \
-t app:v1 .

문제:

매 빌드마다 npm install 실행

동일 Layer 반복 생성

Cache 저장 적용:

docker buildx build \
--cache-from type=registry,ref=app:cache \
--cache-to type=registry,ref=app:cache \
-t app:v1 \
--push .

결과:

첫 번째 빌드

↓

Cache 저장


두 번째 빌드

↓

Cache 재사용

빌드 시간이 크게 줄어들었습니다.

Docker Buildx Build –cache-to 사용 시 주의사항

첫 번째는 Cache 저장 위치를 명확하게 관리해야 합니다.

두 번째는 Cache와 Docker Image는 다른 개념입니다.

세 번째는 오래된 Cache가 계속 쌓이지 않도록 관리해야 합니다.

네 번째는 Registry Cache 권한 설정이 필요할 수 있습니다.

Best Practice

Docker Buildx Build –cache-to 활용 방법:

  • CI/CD에서는 Registry Cache 사용
  • 개발 환경에서는 Local Cache 활용
  • –cache-from과 함께 사용
  • Cache Tag 별도 관리
  • 정기적인 Cache 정리
  • Docker Layer 구조 최적화

자주 묻는 질문

Docker Buildx Build –cache-to는 무엇인가요?

Docker 빌드 과정에서 생성된 Cache를 저장하는 옵션입니다.

–cache-from과 차이는 무엇인가요?

--cache-from은 Cache 가져오기, --cache-to는 Cache 저장 기능입니다.

Cache를 저장하면 이미지도 저장되나요?

아닙니다.

빌드 Layer 재사용을 위한 Cache 데이터만 저장됩니다.

CI/CD에서 사용하면 좋은가요?

네.

반복 빌드가 많은 환경에서 매우 효과적입니다.

마무리

Docker Buildx Build –cache-to는 Docker 이미지 빌드 속도를 향상시키기 위한 핵심 기능입니다.

생성된 Build Cache를 저장하여 다음 빌드에서 재사용할 수 있으며, CI/CD 환경에서는 빌드 시간과 서버 비용을 줄이는 데 큰 도움이 됩니다.

특히 --cache-to--cache-from을 함께 구성하면 빠르고 안정적인 Docker 이미지 자동화 환경을 구축할 수 있습니다.

댓글 남기기