Docker Buildx Bake No Cache 사용법 완벽 가이드! Cache 없이 새롭게 빌드하기

Docker Build Cache는 빌드 시간을 줄여주는 매우 유용한 기능입니다.

하지만 모든 상황에서 Cache가 항상 좋은 것은 아닙니다.

특정 상황에서는 기존 Cache를 사용하지 않고 완전히 새로운 환경에서 Build해야 하는 경우가 있습니다.

예:

  • 최신 Base Image 반영
  • 보안 업데이트 적용
  • Cache 오류 해결
  • 깨끗한 Production Build 생성
  • 테스트 목적의 Clean Build

기본 Docker Build:

코드 변경

↓

기존 Cache 확인

↓

재사용 가능한 Layer 사용

↓

Image 생성

No Cache Build:

코드 변경

↓

Cache 무시

↓

전체 명령 다시 실행

↓

새로운 Image 생성

Docker Buildx Bake에서는 no-cache 옵션을 사용하여 Cache 없이 Build할 수 있습니다.

예:

docker-bake.hcl

target "app" {

  no-cache = true

}

또는 명령어:

docker buildx bake app --no-cache

결과:

기존 Cache 무시

↓

Dockerfile 전체 실행

↓

새로운 Image 생성

이번 글에서는 Docker Buildx Bake No Cache의 개념부터 사용 방법, Clean Build 상황, CI/CD 활용, 주의사항까지 자세히 알아보겠습니다.

Docker Buildx Bake No Cache란 무엇인가?

Docker Buildx Bake No Cache는 기존 Docker Build Cache를 사용하지 않고 새롭게 Image를 생성하는 기능입니다.

일반 Build:

Dockerfile

↓

Cache 검색

↓

기존 Layer 재사용

↓

Build 완료

No Cache Build:

Dockerfile

↓

Cache 검색 생략

↓

모든 Layer 실행

↓

새 Image 생성

즉, 이전 Build 결과를 완전히 무시하는 방식입니다.

Docker Buildx Bake No Cache가 필요한 이유

일반적인 개발 환경에서는 Cache 사용이 효율적입니다.

하지만 다음 상황에서는 No Cache Build가 필요합니다.

최신 Base Image 적용

예:

FROM ubuntu:22.04

Cache 사용 시:

기존 Ubuntu Layer 사용

↓

최신 업데이트 미반영 가능

No Cache:

Ubuntu Image 다시 다운로드

↓

최신 상태 반영

Cache 오류 해결

가끔 Cache가 손상되거나 잘못된 Layer가 사용될 수 있습니다.

문제:

Build 실패

↓

Cache 문제 의심

해결:

docker buildx bake app --no-cache

완전히 새로운 Build를 실행합니다.


보안 업데이트 적용

운영 Image에서는 최신 패키지가 필요합니다.

Cache 사용:

기존 Package Layer 유지

No Cache:

Package Update 실행

↓

최신 보안 패치 적용

Docker Buildx Bake No Cache 기본 사용법

docker-bake.hcl:

target "production" {

  no-cache = true

}

실행:

docker buildx bake production

동작:

Bake 설정 확인

↓

Cache 비활성화

↓

전체 Build 실행

Docker Buildx Bake –no-cache 옵션 사용법

명령어 방식:

docker buildx bake app --no-cache

특징:

  • 일회성 Clean Build
  • Bake 파일 수정 필요 없음
  • 테스트에 적합

사용 예:

docker buildx bake production --no-cache --push

결과:

Cache 사용 안 함

↓

새 Image Build

↓

Registry Push

Docker Buildx Bake No Cache와 Cache-from 차이

두 기능은 반대 역할을 합니다.

Cache-from

기존 Cache 가져오기

↓

빠른 Build

No Cache

기존 Cache 무시

↓

전체 Build

비교:

기능목적
Cache-from빠른 Build
No Cache새로운 Build

Docker Buildx Bake No Cache와 Cache-to 관계

No Cache를 사용해도 새로운 Cache 저장은 가능합니다.

예:

target "app" {

  no-cache = true

  cache-to = [
    "type=registry,ref=company/app:cache"
  ]

}

동작:

기존 Cache 사용 안 함

↓

새로운 Layer 생성

↓

새 Cache 저장

최신 Cache를 갱신할 때 사용할 수 있습니다.

Docker Buildx Bake No Cache와 최신 Image Build

운영 배포 전 Clean Build:

docker buildx bake production \
--no-cache \
--push

흐름:

Source Code

↓

Clean Build

↓

Security Update 반영

↓

Production Image Push

배포 전 검증 과정에서 유용합니다.

Docker Buildx Bake No Cache CI/CD 활용

CI/CD에서는 특정 상황에서 No Cache Build를 실행할 수 있습니다.

예:

GitHub Actions:

- name: Clean Build

  run: |

    docker buildx bake production --no-cache --push

활용:

  • Release Build
  • Security Patch
  • Weekly Fresh Build

자동 과정:

Release Trigger

↓

No Cache Build

↓

새 Image 생성

↓

Deploy

Docker Buildx Bake No Cache 실무 예제

프로젝트:

project/

├── Dockerfile

├── docker-bake.hcl

└── deployment.yaml

docker-bake.hcl:

target "release" {

  tags = [
    "registry.company.com/app:v2"
  ]

  no-cache = true

  platforms = [
    "linux/amd64",
    "linux/arm64"
  ]

}

실행:

docker buildx bake release --push

결과:

기존 Cache 제거

↓

새로운 Multi-platform Image 생성

↓

Registry 저장

Docker Buildx Bake No Cache 문제 해결

Build 시간이 너무 오래 걸리는 경우

원인:

모든 Layer 다시 생성

해결:

평상시:

docker buildx bake app

필요할 때만:

docker buildx bake app --no-cache

최신 Image가 반영되지 않는 경우

확인:

docker pull ubuntu:latest

Base Image 업데이트 후 다시 Build합니다.


Cache 삭제와 No Cache 차이

Cache 삭제:

docker buildx prune

= 저장된 Cache 제거

No Cache:

--no-cache

= 이번 Build에서 Cache 사용 안 함

Docker Buildx Bake No Cache 사용 시 주의사항

첫 번째는 모든 Build Layer가 다시 실행되어 시간이 오래 걸릴 수 있습니다.

두 번째는 CI 비용이 증가할 수 있습니다.

세 번째는 일반 Build마다 사용할 필요가 없습니다.

네 번째는 Release 또는 보안 업데이트 시 사용하는 것이 좋습니다.

Best Practice

Docker Buildx Bake No Cache 활용 방법:

  • Release Build 적용
  • 보안 업데이트 반영
  • Cache 오류 해결
  • 정기 Clean Build 실행
  • 일반 개발에서는 Cache 사용
  • 필요할 때만 No Cache 적용

자주 묻는 질문

Docker Buildx Bake No Cache는 무엇인가요?

기존 Build Cache를 사용하지 않고 새롭게 Docker Image를 생성하는 기능입니다.

No Cache를 사용하면 Image가 더 좋아지나요?

항상 그렇지는 않습니다.

최신 Base Image와 패키지를 다시 가져오는 효과가 있습니다.

Cache 삭제와 같은 기능인가요?

아닙니다.

Cache 삭제는 저장된 Cache를 제거하고, No Cache는 현재 Build에서만 Cache 사용을 막습니다.

언제 사용하는 것이 좋나요?

Production Release, 보안 업데이트, Cache 문제 해결 상황에서 사용하는 것이 좋습니다.

마무리

Docker Buildx Bake No Cache는 기존 Build Cache를 완전히 무시하고 새로운 Docker Image를 생성하는 기능입니다.

일반적인 개발 과정에서는 Cache를 활용하는 것이 효율적이지만, 최신 Base Image 적용이나 보안 업데이트, Release Build에서는 No Cache 방식이 필요합니다.

특히 운영 환경 배포 전 Clean Build를 수행하면 최신 상태의 검증된 Docker Image를 생성할 수 있습니다.

댓글 남기기