Docker Buildx Build –cache-from 사용법 완벽 가이드! 빌드 Cache 가져오기

Docker 이미지를 반복적으로 빌드하다 보면 같은 작업을 계속 수행하게 됩니다.

예를 들어 애플리케이션 코드를 조금 수정하고 다시 빌드할 때:

  • 운영체제 패키지 설치
  • 라이브러리 다운로드
  • 의존성 설치
  • Docker 이미지 Layer 생성

같은 과정이 매번 반복될 수 있습니다.

이 과정은 프로젝트 규모가 커질수록 빌드 시간을 크게 증가시킵니다.

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

그중 --cache-from 옵션은 이전에 저장된 빌드 Cache를 가져와 재사용하는 기능입니다.

예:

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

기존 Cache를 활용하여 불필요한 재빌드를 줄일 수 있습니다.

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

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

--cache-from은 기존에 저장된 Docker Build Cache를 가져오는 옵션입니다.

기본 형식:

docker buildx build \
--cache-from CACHE_SOURCE .

빌드 과정:

기존 Cache

↓

Buildx Cache 확인

↓

재사용 가능한 Layer 적용

↓

빠른 이미지 빌드

이미 생성된 Layer를 다시 사용하여 빌드 시간을 단축합니다.

Docker Build Cache란 무엇인가?

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

예:

FROM ubuntu

RUN apt update

COPY app .

RUN npm install

빌드 과정:

Layer 1
↓
Layer 2
↓
Layer 3
↓
Layer 4

변경되지 않은 Layer는 Cache를 재사용할 수 있습니다.

Docker Buildx Build –cache-from은 언제 사용하는가?

다음 환경에서 많이 사용합니다.

  • CI/CD 빌드
  • 대규모 프로젝트
  • 반복 배포
  • Docker 이미지 최적화
  • 빌드 시간 단축

특히 GitHub Actions, GitLab CI 같은 자동화 환경에서 효과적입니다.

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

가장 기본적인 형태:

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

로컬 폴더에 저장된 Cache를 가져옵니다.

Registry Cache 가져오기

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

예:

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

Docker Registry에 저장된 Cache Layer를 사용합니다.

Local Cache 가져오기

로컬 Cache 사용:

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

개발 환경 테스트에서 유용합니다.

Docker Buildx Cache 유형

주요 Cache 방식:

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

Docker Buildx Build –cache-from과 –cache-to 관계

Cache는 보통 두 옵션을 함께 사용합니다.

–cache-to

Cache 저장:

--cache-to type=registry,ref=app:cache

–cache-from

Cache 가져오기:

--cache-from type=registry,ref=app:cache

구조:

첫 번째 빌드

↓

Cache 저장 (--cache-to)

↓

다음 빌드

↓

Cache 사용 (--cache-from)

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

CI/CD 빌드 속도 개선

기존:

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

매번 모든 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 .

결과:

  • 기존 Layer 재사용
  • 빌드 시간 감소
  • CI 비용 절약

GitHub Actions 활용 예제

CI 환경:

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

GitHub Actions Cache를 활용할 수 있습니다.

Linux 서버 문제 해결

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

기존:

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

빌드 시간:

20분

확인 결과 매번 모든 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 .

변경 후:

5분

기존 Layer를 재사용하여 빌드 시간이 크게 감소했습니다.

Docker Buildx Build –cache-from은 반복 빌드 환경에서 가장 효과적인 최적화 기능 중 하나입니다.

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

첫 번째는 Cache가 먼저 생성되어 있어야 합니다.

두 번째는 Cache Tag 관리가 필요합니다.

세 번째는 오래된 Cache 사용으로 예상하지 못한 빌드 결과가 발생할 수 있습니다.

네 번째는 운영 환경에서는 Registry Cache 사용을 권장합니다.

Best Practice

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

  • CI/CD에서는 Registry Cache 사용
  • –cache-to와 함께 구성
  • Cache Tag를 별도로 관리
  • 정기적으로 오래된 Cache 정리
  • 빌드 시간을 측정하여 효과 확인
  • 중요한 배포에서는 Cache 검증

자주 묻는 질문

Docker Buildx Build –cache-from은 무엇인가요?

기존 빌드 Cache를 가져와 재사용하는 옵션입니다.

Cache를 사용하면 왜 빨라지나요?

변경되지 않은 Docker Layer를 다시 빌드하지 않기 때문입니다.

–cache-from만 사용하면 되나요?

일반적으로 Cache 생성용 --cache-to와 함께 사용합니다.

CI/CD에서 가장 좋은 Cache 방식은 무엇인가요?

일반적으로 Registry Cache 또는 GitHub Actions Cache를 많이 사용합니다.

마무리

Docker Buildx Build –cache-from은 Docker 이미지 빌드 시간을 줄이는 핵심 기능입니다.

기존에 생성된 Layer Cache를 재사용하여 반복적인 빌드 작업을 빠르게 처리할 수 있으며, CI/CD 환경에서는 빌드 비용과 배포 시간을 크게 줄일 수 있습니다.

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

댓글 남기기