Docker Buildx Bake Cache Export/Import 사용법 완벽 가이드! Build Cache 공유 및 이동하기

Docker Image Build 과정에서 Cache는 Build 속도를 크게 향상시키는 중요한 기능입니다.

하지만 하나의 개발 환경에서만 Cache를 사용하는 것이 아니라 여러 서버, CI/CD 환경, 팀 구성원이 함께 사용해야 하는 경우가 많습니다.

예:

개발 서버

↓

Build Cache 생성


CI 서버

↓

같은 Cache 활용

또는:

기존 Build 서버

↓

Cache Export

↓

새로운 Build 서버

↓

Cache Import

이러한 환경에서는 Cache를 내보내고 가져오는 기능이 필요합니다.

Docker Buildx Bake에서는 cache-tocache-from 설정을 사용하여 Build Cache를 Export하고 Import할 수 있습니다.

예:

docker-bake.hcl

target "app" {

  cache-to = [

    "type=local,dest=./cache"

  ]

  cache-from = [

    "type=local,src=./cache"

  ]

}

동작:

Build 실행

↓

Cache 저장

↓

다음 Build에서 Cache 불러오기

↓

빠른 Build 진행

이번 글에서는 Docker Buildx Bake Cache Export/Import 개념부터 Local Cache 이동, Registry Cache 공유, CI/CD 활용, 실무 운영 방법까지 자세히 알아보겠습니다.

Docker Buildx Bake Cache Export/Import란 무엇인가?

Docker Buildx Bake Cache Export/Import는 Build 과정에서 생성된 Cache 데이터를 저장하고 다시 사용하는 기능입니다.

구조:

Build

↓

Cache 생성

↓

Export

↓

저장소 보관

↓

Import

↓

다른 Build에서 사용

Cache Export:

현재 Build Cache

↓

외부 저장

Cache Import:

저장된 Cache

↓

새로운 Build 적용

Docker Buildx Bake Cache Export/Import가 필요한 이유

일반적인 Cache는 하나의 환경에 저장됩니다.

예:

개발 PC

↓

Cache 생성

↓

개발 PC에서만 사용

문제:

  • 다른 서버에서 재사용 불가
  • CI 환경에서 Cache 없음
  • Build 시간이 증가

Export/Import 사용:

Build Cache

↓

공유 저장소

↓

여러 환경에서 사용

장점:

  • Build 시간 단축
  • CI/CD 속도 향상
  • 여러 서버 공유 가능
  • 반복 작업 감소

Docker Buildx Bake Cache Export 기본 사용법

Local Cache Export:

target "app" {

  cache-to = [

    "type=local,dest=./build-cache"

  ]

}

실행:

docker buildx bake app

결과:

project/

├── build-cache/

├── Dockerfile

└── docker-bake.hcl

Build Cache가 폴더 형태로 저장됩니다.

Docker Buildx Bake Cache Import 기본 사용법

저장된 Cache 가져오기:

target "app" {

  cache-from = [

    "type=local,src=./build-cache"

  ]

}

실행:

docker buildx bake app

동작:

build-cache

↓

기존 Layer 확인

↓

변경 없는 작업 재사용

Docker Buildx Bake Local Cache 이동하기

서버 A:

Build 서버 A

↓

Cache 생성

Export:

cache-to = [

"type=local,dest=/backup/cache"

]

서버 B:

cache-from = [

"type=local,src=/backup/cache"

]

결과:

서버 A Cache

↓

서버 B 사용

↓

빠른 Build

활용:

  • 서버 이전
  • 개발 환경 공유
  • Offline Build

Docker Buildx Bake Registry Cache Export/Import

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

설정:

target "production" {

  cache-to = [

    "type=registry,ref=registry.company.com/app:cache"

  ]

  cache-from = [

    "type=registry,ref=registry.company.com/app:cache"

  ]

}

구조:

Docker Registry

↓

Build Cache 저장

↓

여러 Runner 사용

장점:

  • 팀 공유 가능
  • CI 환경 최적화
  • 서버 간 이동 불필요

Docker Buildx Bake Cache Export/Import CI/CD 활용

CI/CD에서는 Runner가 매번 새롭게 생성됩니다.

기본:

새 Runner 생성

↓

Cache 없음

↓

전체 Build 실행

Cache Import 적용:

Runner 생성

↓

Registry Cache 가져오기

↓

기존 Layer 재사용

GitHub Actions 예:

- name: Build Image

  run: |

    docker buildx bake production

Bake:

cache-from = [

"type=registry,ref=image:cache"

]

cache-to = [

"type=registry,ref=image:cache"

]

결과:

CI Build 속도 향상

↓

배포 시간 감소

Docker Buildx Bake Cache Export/Import와 Multi-platform Build

Multi-platform Build에서는 Cache 공유가 중요합니다.

예:

linux/amd64

+

linux/arm64

설정:

target "production" {

platforms = [

"linux/amd64",

"linux/arm64"

]

cache-to = [

"type=registry,ref=image:cache"

]

}

효과:

  • Platform별 Layer 관리
  • 반복 Build 감소
  • CI 시간 단축

Docker Buildx Bake Cache Export/Import 실무 예제

프로젝트:

project/

├── Dockerfile

├── docker-bake.hcl

└── cache/

docker-bake.hcl:

target "production" {

  tags = [

    "registry.company.com/app:v1"

  ]

  cache-from = [

    "type=registry,ref=registry.company.com/app:cache"

  ]

  cache-to = [

    "type=registry,ref=registry.company.com/app:cache,mode=max"

  ]

}

실행:

docker buildx bake production --push

결과:

Image Build

↓

Cache Export

↓

Registry 저장

↓

다음 Build 재사용

Docker Buildx Bake Cache Mode 설정

Cache Export에는 Mode 옵션이 있습니다.

mode=min

기본 Cache 저장 방식

특징:

  • 필요한 최소 Layer 저장
  • 저장 공간 절약

mode=max

전체 Cache 저장 방식

예:

cache-to = [

"type=registry,ref=image:cache,mode=max"

]

특징:

  • 더 많은 Layer 저장
  • 다음 Build 속도 향상

비교:

방식특징
mode=min저장 공간 절약
mode=maxBuild 속도 최적화

Docker Buildx Bake Cache 확인 방법

Cache 확인:

docker buildx du

Build 로그:

docker buildx bake app

확인:

CACHED

↓

Cache 적용

Docker Buildx Bake Cache Export/Import 문제 해결

Cache를 가져오지 못하는 경우

확인:

docker buildx du

확인 항목:

  • Cache 경로
  • Registry 권한
  • Image Tag

Registry Cache 접근 오류

확인:

  • Docker Login
  • Registry 주소
  • Push 권한

Cache 용량 증가

정리:

docker buildx prune

Docker Buildx Bake Cache Export/Import 사용 시 주의사항

첫 번째는 Cache 저장 위치를 안정적으로 관리해야 합니다.

두 번째는 Registry Cache 사용 시 접근 권한 설정이 필요합니다.

세 번째는 Production 환경에서는 mode=max 사용 여부를 고려해야 합니다.

네 번째는 오래된 Cache는 정기적으로 정리해야 합니다.

Best Practice

Docker Buildx Bake Cache Export/Import 활용 방법:

  • 개발 환경 → Local Cache
  • CI/CD → Registry Cache
  • 팀 환경 → Shared Cache
  • Production → mode=max 검토
  • 정기 Cache 정리
  • Build 시간 최적화

자주 묻는 질문

Cache Export와 Import는 무엇인가요?

Build Cache를 저장하고 다른 환경에서 다시 사용하는 기능입니다.

여러 서버에서 같은 Cache를 사용할 수 있나요?

가능합니다.

Registry Cache를 사용하면 여러 서버에서 공유할 수 있습니다.

CI/CD에서 꼭 사용해야 하나요?

대규모 프로젝트에서는 Build 시간을 줄이기 위해 많이 사용합니다.

mode=max는 언제 사용하나요?

Build 속도가 중요하고 저장 공간이 충분한 환경에서 적합합니다.

마무리

Docker Buildx Bake Cache Export/Import는 여러 환경에서 Docker Build 속도를 최적화하기 위한 핵심 기능입니다.

Local Cache는 개인 개발 환경에 적합하고, Registry Cache는 팀 개발과 CI/CD 환경에서 효과적으로 활용할 수 있습니다.

특히 서버 운영 환경에서는 Cache 전략을 잘 구성하면 반복적인 Image Build 시간을 크게 줄이고 안정적인 배포 Pipeline을 구축할 수 있습니다.

댓글 남기기