Docker Buildx Bake Multi Platform Build 사용법 완벽 가이드! AMD64와 ARM64 Image 동시에 생성하기

최근 서버 환경에서는 하나의 CPU Architecture만 지원하는 Image보다 여러 환경에서 실행 가능한 Multi-platform Image가 중요해지고 있습니다.

예:

  • 일반 서버 → AMD64
  • AWS Graviton → ARM64
  • Apple Silicon Mac → ARM64
  • Edge Device → ARM 기반

기존 Docker Build:

Dockerfile

↓

하나의 Architecture Build

↓

특정 환경에서만 실행

문제:

AMD64 Image

↓

ARM64 서버 실행 불가

또는:

ARM64 Image

↓

일반 서버 실행 불가

Docker Buildx Bake에서는 Multi-platform Build 기능을 사용하여 하나의 설정으로 여러 Architecture Image를 생성할 수 있습니다.

예:

docker-bake.hcl

target "production" {

  platforms = [

    "linux/amd64",

    "linux/arm64"

  ]

}

실행:

docker buildx bake production --push

결과:

Docker Image Build

↓

linux/amd64 생성

↓

linux/arm64 생성

↓

하나의 Multi-platform Image 생성

이번 글에서는 Docker Buildx Bake Multi-platform Build의 개념부터 Platform 설정, ARM64/AMD64 Image 생성, Registry Push, CI/CD 활용까지 자세히 알아보겠습니다.

Docker Buildx Bake Multi-platform Build란 무엇인가?

Multi-platform Build는 하나의 Docker Image를 여러 CPU Architecture에서 실행 가능하도록 만드는 방식입니다.

기본 구조:

Source Code

↓

Docker Buildx

↓

AMD64 Image

+

ARM64 Image

↓

Multi-platform Manifest

사용자가 Image를 다운로드하면 Docker가 실행 환경에 맞는 Image를 자동 선택합니다.

예:

Intel Server

↓

linux/amd64 Image 선택


ARM Server

↓

linux/arm64 Image 선택

Docker Buildx Bake Multi-platform Build가 필요한 이유

서버 환경은 다양해지고 있습니다.

예:

AMD64 환경

사용:

  • 일반 Cloud Server
  • Intel CPU
  • AMD CPU

ARM64 환경

사용:

  • AWS Graviton
  • Apple Silicon
  • ARM Server

하나의 Architecture만 지원하면:

서비스 배포

↓

환경 변경

↓

Image 재생성 필요

문제가 발생합니다.

Multi-platform 사용:

하나의 Image

↓

여러 서버 환경 지원

장점:

  • 배포 편의성 증가
  • Cloud 선택 자유도 증가
  • 운영 효율 향상

Docker Buildx Bake Multi-platform 기본 설정

docker-bake.hcl:

target "app" {

  platforms = [

    "linux/amd64",

    "linux/arm64"

  ]

}

실행:

docker buildx bake app

Build 결과:

linux/amd64

+

linux/arm64

Image 생성

Docker Buildx Bake Platform 종류

대표적인 Platform:

linux/amd64

가장 일반적인 서버 환경입니다.

사용:

  • AWS EC2
  • 일반 VPS
  • Intel/AMD 서버

linux/arm64

ARM 기반 환경입니다.

사용:

  • AWS Graviton
  • Raspberry Pi
  • Apple Silicon

linux/386

32bit 환경입니다.

현재는 사용 빈도가 낮습니다.

linux/arm/v7

ARM 32bit 환경입니다.

Docker Buildx Bake Multi-platform Registry Push

Multi-platform Image는 일반적으로 Registry Push가 필요합니다.

설정:

target "production" {

  tags = [

    "registry.company.com/app:v1"

  ]

  platforms = [

    "linux/amd64",

    "linux/arm64"

  ]

}

실행:

docker buildx bake production --push

결과:

Registry

app:v1

├── amd64

└── arm64

Docker Buildx Bake Multi-platform Local 테스트

Multi-platform Image는 Local Docker 저장 방식에 제한이 있습니다.

일반적인 방법:

docker buildx build \
--platform linux/amd64,linux/arm64 \
--push

테스트 목적:

특정 Platform Build:

docker buildx bake app \
--set *.platform=linux/amd64

Docker Buildx Bake Multi-platform과 QEMU

다른 Architecture Build를 위해 QEMU를 사용할 수 있습니다.

예:

AMD64 PC

↓

ARM64 Image Build

↓

QEMU Emulator 사용

설치:

docker run --privileged --rm tonistiigi/binfmt --install all

확인:

docker buildx inspect

결과:

Platforms:

linux/amd64

linux/arm64

Docker Buildx Bake Multi-platform CI/CD 활용

운영 환경에서는 CI/CD에서 많이 사용합니다.

구조:

Git Push

↓

CI 실행

↓

AMD64 Build

+

ARM64 Build

↓

Registry Push

↓

서버 배포

GitHub Actions 예:

- name: Build Multi Platform

  run: |

    docker buildx bake production --push

효과:

  • 자동 Multi-platform 생성
  • 서버 환경 대응
  • 배포 자동화

Docker Buildx Bake Multi-platform Cache 활용

Multi-platform Build는 시간이 오래 걸릴 수 있습니다.

Cache 적용:

target "production" {

  platforms = [

    "linux/amd64",

    "linux/arm64"

  ]

  cache-from = [

    "type=registry,ref=image:cache"

  ]

  cache-to = [

    "type=registry,ref=image:cache"

  ]

}

효과:

  • 반복 Build 속도 향상
  • CI 시간 감소

Docker Buildx Bake Multi-platform 실무 예제

프로젝트:

project/

├── Dockerfile

├── docker-bake.hcl

└── app/

docker-bake.hcl:

target "production" {

  tags = [

    "registry.company.com/server:v1"

  ]

  platforms = [

    "linux/amd64",

    "linux/arm64"

  ]

  output = [

    "type=image,push=true"

  ]

  attest = [

    "type=provenance",

    "type=sbom"

  ]

}

실행:

docker buildx bake production

결과:

AMD64 Image 생성

+

ARM64 Image 생성

+

SBOM 생성

+

Provenance 생성

↓

Registry 저장

Docker Buildx Bake Multi-platform 확인 방법

Image 정보 확인:

docker buildx imagetools inspect image-name

확인:

Platform:

linux/amd64

linux/arm64

Builder 확인:

docker buildx inspect

Docker Buildx Bake Multi-platform 문제 해결

ARM64 Build 실패

확인:

docker buildx inspect

QEMU 지원 여부 확인

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

해결:

  • Cache 적용
  • Native Runner 사용
  • 필요한 Platform만 Build

Image 실행 오류

확인:

  • Architecture 지원 여부
  • Base Image 지원 여부

Docker Buildx Bake Multi-platform 사용 시 주의사항

첫 번째는 Base Image가 모든 Platform을 지원하는지 확인해야 합니다.

두 번째는 Multi-platform Build는 일반 Build보다 시간이 증가할 수 있습니다.

세 번째는 Registry Push 방식이 일반적으로 권장됩니다.

네 번째는 Platform별 테스트가 필요합니다.

Best Practice

Docker Buildx Bake Multi-platform 활용 방법:

  • AMD64 + ARM64 구성
  • Registry Push 사용
  • Cache 적용
  • SBOM/Provenance 추가
  • CI/CD 자동화
  • Production 환경 적용

자주 묻는 질문

Multi-platform Build는 무엇인가요?

하나의 Docker Image를 여러 CPU Architecture에서 실행 가능하도록 만드는 기능입니다.

AMD64와 ARM64를 동시에 만들 수 있나요?

가능합니다.

Buildx Bake의 platforms 설정을 사용하면 됩니다.

Local Docker에 저장할 수 있나요?

Multi-platform Image는 일반적으로 Registry Push 방식으로 관리합니다.

서버 운영에서 필요한가요?

Cloud 환경과 다양한 서버 Architecture를 지원하려면 매우 유용합니다.

마무리

Docker Buildx Bake Multi-platform Build는 다양한 서버 환경을 지원하기 위한 핵심 기능입니다.

AMD64 서버와 ARM64 서버를 하나의 Image 구조로 관리하면 Cloud 환경 변경과 서버 확장이 더욱 쉬워집니다.

특히 AWS Graviton, Kubernetes, Cloud Native 환경에서는 Multi-platform Image 구축 능력이 중요한 서버 운영 기술이 되고 있습니다.

댓글 남기기