Docker Buildx Bake Output 사용법 완벽 가이드! Build 결과 저장 및 Export 관리하기

Docker Image를 Build할 때 최종 결과물을 어떻게 처리할지 결정하는 것은 매우 중요합니다.

예:

  • Docker Image Registry Push
  • Local Docker 저장
  • 파일 형태 Export
  • 압축 파일 생성
  • OCI Image 저장
  • CI/CD Artifact 생성

기본 Build:

Docker Build 실행

↓

Image 생성

↓

결과 저장 방식 결정

하지만 프로젝트 환경에 따라 원하는 결과 형태가 다릅니다.

예:

개발 환경:

Local Docker Image 필요

운영 환경:

Registry Push 필요

CI 환경:

Artifact 파일 저장 필요

Docker Buildx Bake에서는 Output 설정을 사용하여 Build 결과물을 원하는 형태로 관리할 수 있습니다.

예:

docker-bake.hcl

target "app" {

  output = [

    "type=image,push=true"

  ]

}

실행:

docker buildx bake app

결과:

Docker Image Build

↓

Registry Push

↓

배포 가능 Image 생성

이번 글에서는 Docker Buildx Bake Output의 개념부터 Image Push, Local 저장, OCI Export, Docker Export, CI/CD 활용까지 자세히 알아보겠습니다.

Docker Buildx Bake Output이란 무엇인가?

Docker Buildx Bake Output은 Build 결과물을 어디로 보낼지 결정하는 설정입니다.

기본 구조:

Docker Build

↓

Output 설정

↓

결과 저장

대표적인 Output 종류:

  • image
  • local
  • tar
  • oci
  • docker

Docker Buildx Bake Output이 필요한 이유

Output 설정 없이 Build하면 환경에 따라 원하는 결과를 얻기 어렵습니다.

예:

CI Build

↓

Image 생성

↓

저장 위치 불명확

Output 사용:

Build

↓

Registry Push

또는

↓

파일 저장

장점:

  • 배포 자동화
  • Artifact 관리
  • 환경별 저장 방식 변경
  • Build 결과 제어

Docker Buildx Bake Output 기본 사용법

docker-bake.hcl:

target "production" {

  output = [

    "type=image,push=true"

  ]

}

실행:

docker buildx bake production

동작:

Image 생성

↓

Registry Push

Docker Buildx Bake Output Type=image 사용법

가장 많이 사용하는 방식입니다.

설정:

output = [

  "type=image"

]

의미:

Docker Image 생성

Registry Push:

output = [

  "type=image,push=true"

]

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

Docker Buildx Bake Output Local 저장

Build 결과를 Local 폴더로 저장할 수 있습니다.

설정:

output = [

  "type=local,dest=./output"

]

결과:

project/

├── output/

    ├── files

    └── metadata

활용:

  • 정적 파일 생성
  • Build 결과 확인
  • 테스트 결과 저장

Docker Buildx Bake Output Type=docker 사용법

Local Docker Engine에 Image를 저장합니다.

설정:

output = [

  "type=docker"

]

결과:

Docker Build

↓

Local Docker Image 저장

확인:

docker images

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

Docker Buildx Bake Output OCI Export 사용법

OCI Image 형식으로 저장할 수 있습니다.

설정:

output = [

  "type=oci,dest=image.tar"

]

결과:

image.tar 생성

활용:

  • Image 백업
  • 다른 Container 도구 사용
  • Offline 배포

Docker Buildx Bake Output Tar Export 사용법

Tar 파일 형태로 저장합니다.

설정:

output = [

  "type=tar,dest=image.tar"

]

결과:

Docker Layer

↓

tar 파일 저장

Docker Buildx Bake Output Registry Push 활용

운영 환경에서는 Registry Push 방식이 가장 일반적입니다.

예:

target "production" {

  tags = [

    "registry.company.com/app:v1"

  ]

  output = [

    "type=image,push=true"

  ]

}

실행:

docker buildx bake production

결과:

Image Build

↓

Registry 저장

↓

배포 가능

Docker Buildx Bake Output Multi-platform 활용

Multi-platform Image는 Output 설정이 중요합니다.

예:

target "production" {

  platforms = [

    "linux/amd64",

    "linux/arm64"

  ]

  output = [

    "type=image,push=true"

  ]

}

결과:

Registry

↓

app:v1

├── amd64

└── arm64

Docker Buildx Bake Output CI/CD 활용

CI/CD에서는 Build 결과를 자동 관리할 수 있습니다.

예:

GitHub Actions:

- name: Build Image

  run: |

    docker buildx bake production

Bake:

output = [

  "type=image,push=true"

]

흐름:

Code Push

↓

CI 실행

↓

Image Build

↓

Registry Push

Docker Buildx Bake Output 실무 예제

프로젝트:

project/

├── Dockerfile

├── docker-bake.hcl

└── output/

docker-bake.hcl:

target "production" {

  tags = [

    "registry.company.com/backend:v1.0.0"

  ]

  platforms = [

    "linux/amd64",

    "linux/arm64"

  ]

  output = [

    "type=image,push=true"

  ]

}

실행:

docker buildx bake production

결과:

Multi-platform Image 생성

↓

Registry Push 완료

Docker Buildx Bake Output 확인 방법

Build 결과 확인:

docker buildx imagetools inspect image-name

Local Image 확인:

docker images

Docker Buildx Bake Output 문제 해결

Image가 Local에 보이지 않는 경우

원인:

type=image,push=true

Registry Push 전용 설정일 수 있습니다.

해결:

output = [

"type=docker"

]

Registry Push 실패

확인:

  • Docker Login
  • Registry 권한
  • Image Tag

Export 파일 생성 실패

확인:

  • 저장 경로
  • 디렉터리 권한
  • 파일 이름

Docker Buildx Bake Output 사용 시 주의사항

첫 번째는 Production에서는 일반적으로 Registry Push 방식을 사용합니다.

두 번째는 Local 저장과 Push 방식을 목적에 맞게 구분해야 합니다.

세 번째는 Multi-platform Build에서는 Docker Export보다 Image Push 방식을 권장합니다.

네 번째는 Artifact 저장 시 파일 크기를 관리해야 합니다.

Best Practice

Docker Buildx Bake Output 활용 방법:

  • Production → type=image,push=true
  • Development → type=docker
  • Backup → type=oci
  • Artifact → type=local
  • CI/CD → Registry Push
  • Multi-platform → Image Output

자주 묻는 질문

Docker Buildx Bake Output은 무엇인가요?

Build 결과물을 저장하거나 전달하는 방식을 지정하는 기능입니다.

가장 많이 사용하는 Output은 무엇인가요?

운영 환경에서는 type=image,push=true 방식을 가장 많이 사용합니다.

Local Docker에 저장할 수 있나요?

가능합니다.

type=docker를 사용하면 됩니다.

Multi-platform Image도 Export 가능한가요?

가능하지만 일반적으로 Registry Push 방식이 더 적합합니다.

마무리

Docker Buildx Bake Output은 Docker Build 결과를 원하는 형태로 관리하기 위한 핵심 기능입니다.

개발 환경에서는 Local Image 저장, 운영 환경에서는 Registry Push, 백업 환경에서는 OCI Export 등 목적에 맞는 Output 방식을 선택할 수 있습니다.

특히 CI/CD Pipeline과 Multi-platform Image 환경에서는 Output 설정을 정확하게 구성하면 안정적인 Docker Build 및 배포 시스템을 구축할 수 있습니다.

댓글 남기기