Docker Buildx Bake Platform 사용법 완벽 가이드! 멀티 아키텍처 이미지 빌드하기

Docker 이미지를 운영하다 보면 하나의 서버 환경만 지원하는 이미지로는 부족한 경우가 많습니다.

예:

  • Intel 서버
  • AMD 서버
  • ARM 서버
  • Apple Silicon Mac
  • Raspberry Pi
  • 클라우드 ARM 인스턴스

각 환경마다 CPU 구조가 다르기 때문에 동일한 Docker 이미지를 실행하지 못하는 문제가 발생할 수 있습니다.

기존 방식:

docker buildx bake

하나의 환경 기준으로만 이미지 생성

하지만 Docker Buildx Bake에서는 Platform 설정을 통해 여러 CPU 아키텍처용 이미지를 동시에 생성할 수 있습니다.

예:

docker-bake.hcl

target "app" {

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

}

결과:

linux/amd64 이미지 생성

+

linux/arm64 이미지 생성

하나의 Docker Image Tag로 여러 플랫폼을 지원할 수 있습니다.

이번 글에서는 Docker Buildx Bake Platform의 개념부터 멀티 아키텍처 빌드, 플랫폼 설정 방법, CI/CD 활용 방법까지 자세히 알아보겠습니다.

Docker Buildx Bake Platform이란 무엇인가?

Docker Buildx Bake Platform은 Docker 이미지를 생성할 대상 CPU 아키텍처와 운영체제를 지정하는 기능입니다.

기본 구조:

Dockerfile

↓

Platform 지정

↓

Architecture별 이미지 생성

예:

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

두 가지 환경에서 실행 가능한 이미지를 만들 수 있습니다.

Docker Platform 구조 이해하기

Docker Platform은 일반적으로 다음 형식으로 작성합니다.

OS/Architecture

예:

linux/amd64

= Linux 운영체제 + Intel/AMD 64bit CPU

linux/arm64

= Linux 운영체제 + ARM 64bit CPU

대표적인 Platform:

Platform설명
linux/amd64일반 서버, Intel CPU
linux/arm64ARM 서버, Apple Silicon
linux/38632bit Intel
linux/arm/v7ARM 32bit

Docker Buildx Bake Platform이 필요한 이유

일반적인 Docker Image:

amd64 전용 이미지

문제:

ARM 서버에서는 실행 불가

예:

개발자:

MacBook M 시리즈 사용

ARM64 환경

운영 서버:

Intel 서버

AMD64 환경

Platform 기능 사용:

하나의 Image Tag

↓

amd64 지원

↓

arm64 지원

다양한 환경에서 동일한 이미지를 사용할 수 있습니다.

Docker Buildx Bake Platform 기본 사용법

docker-bake.hcl:

target "app" {

  context = "."

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

  tags = [
    "company/app:v1"
  ]

}

실행:

docker buildx bake app --push

결과:

company/app:v1

├── linux/amd64

└── linux/arm64

Docker Buildx Bake Platform과 Docker Buildx Builder

멀티 플랫폼 빌드를 실행하려면 Buildx Builder가 필요합니다.

확인:

docker buildx ls

Builder 생성:

docker buildx create \
--name multi-builder \
--use

확인:

docker buildx inspect

멀티 플랫폼 빌드 환경을 준비할 수 있습니다.

Docker Buildx Bake Platform Registry 저장

멀티 플랫폼 이미지는 일반적으로 Registry에 Push해야 합니다.

예:

target "app" {

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

  tags = [
    "company/app:v1"
  ]

  output = [
    "type=registry"
  ]

}

실행:

docker buildx bake app

결과:

Registry에 Multi-platform Image 저장

Docker Buildx Bake Platform과 –load 차이

멀티 플랫폼 빌드에서는 주의할 점이 있습니다.

일반:

docker buildx bake --load

가능:

단일 플랫폼 이미지

멀티 플랫폼:

linux/amd64

+

linux/arm64

결과:

Docker Engine에 직접 Load 불가

멀티 플랫폼은 일반적으로:

docker buildx bake --push

방식을 사용합니다.

Docker Buildx Bake Platform 실무 활용 예제

Intel 서버 + ARM 서버 지원

docker-bake.hcl:

target "production" {

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

  tags = [
    "company/app:production"
  ]

}

빌드:

docker buildx bake production --push

결과:

Intel 서버

amd64 이미지 사용

ARM 서버

arm64 이미지 사용

자동으로 맞는 이미지를 선택합니다.

Docker Buildx Bake Platform과 CI/CD 활용

CI/CD 환경:

코드 변경

↓

Multi-platform Build

↓

Registry Push

↓

서버 배포

예:

docker buildx bake \
--push

활용:

  • Kubernetes 배포
  • 클라우드 서버 운영
  • 다양한 개발 환경 지원

Docker Buildx Bake Platform과 Cache 활용

멀티 플랫폼 빌드는 시간이 오래 걸릴 수 있습니다.

Cache 적용:

target "app" {

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

  cache-from = [
    "type=registry,ref=company/cache"
  ]

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

}

효과:

  • 반복 빌드 시간 감소
  • CI 비용 절감
  • Layer 재사용

Linux 서버 문제 해결

Docker 이미지를 하나 만들어 여러 서버에서 사용하려 했습니다.

기존:

docker buildx bake app

문제:

Intel 서버 정상 실행

ARM 서버 실행 실패

원인:

amd64 전용 이미지 생성

해결:

docker-bake.hcl:

target "app" {

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

}

빌드:

docker buildx bake app --push

결과:

Intel 서버와 ARM 서버 모두 동일한 Image Tag 사용 가능

Docker Buildx Bake Platform 사용 시 주의사항

첫 번째는 멀티 플랫폼 이미지는 빌드 시간이 증가할 수 있습니다.

두 번째는 Registry Push 방식이 일반적으로 필요합니다.

세 번째는 Builder가 멀티 플랫폼을 지원하는지 확인해야 합니다.

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

Best Practice

Docker Buildx Bake Platform 활용 방법:

  • 운영 환경은 Multi-platform 사용
  • amd64와 arm64 함께 관리
  • Registry Push 방식 사용
  • Cache 함께 적용
  • Platform별 테스트 진행
  • 공식 Multi-arch Base Image 사용

자주 묻는 질문

Docker Buildx Bake Platform은 무엇인가요?

Docker 이미지를 여러 CPU 아키텍처용으로 빌드하는 기능입니다.

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

일반적으로:

linux/amd64

linux/arm64

두 가지를 많이 사용합니다.

ARM Mac에서도 사용할 수 있나요?

가능합니다.

Apple Silicon Mac은 ARM64 기반이므로 arm64 이미지를 사용할 수 있습니다.

멀티 플랫폼 이미지는 어디에 저장하나요?

일반적으로 Docker Registry에 Push하여 관리합니다.

마무리

Docker Buildx Bake Platform은 다양한 서버 환경을 지원하기 위한 핵심 기능입니다.

하나의 Docker Image Tag로 Intel 서버, ARM 서버, Apple Silicon 환경 등 여러 플랫폼에서 실행 가능한 이미지를 생성할 수 있습니다.

특히 클라우드 환경과 Kubernetes 운영에서는 다양한 CPU 아키텍처를 지원하는 것이 중요하기 때문에 Multi-platform Build는 현대 Docker 운영에서 필수적인 기술입니다.

Docker Buildx Bake Platform과 Cache, Registry Push를 함께 활용하면 빠르고 안정적인 멀티 아키텍처 이미지 빌드 환경을 구축할 수 있습니다.

댓글 남기기