Docker이미지와 빌드

buildx와 multi-platform image

한 아키텍처만이 아니라 amd64와 arm64 같은 여러 플랫폼용 이미지를 함께 빌드하고 배포할 때 쓰는 buildx의 기본 흐름을 정리합니다.

마지막 수정 2026년 3월 22일

기본 패턴

bash
docker buildx build \
  --platform linux/amd64,linux/arm64 \
  -t myorg/myapp:1.0.0 \
  --push .

설명

  • 예전에는 로컬 머신 아키텍처에 맞는 이미지 하나만 만들면 충분한 경우가 많았지만, 지금은 Apple Silicon 개발 환경과 다양한 서버 환경 때문에 여러 플랫폼 이미지를 함께 다루는 일이 흔해졌습니다.
  • buildx는 Docker BuildKit 기반의 확장 빌더로, multi-platform build와 고급 캐시 전략을 더 잘 지원합니다. docker build보다 기능 폭이 넓다고 보면 됩니다.
  • multi-platform image는 겉보기엔 태그 하나지만, 내부적으로는 여러 아키텍처용 이미지를 묶은 manifest 형태로 배포됩니다. 그래서 사용자 환경에 맞는 이미지를 자동으로 받게 됩니다.
  • 이 기능은 라이브러리 배포, 공용 CLI 도구, 여러 서버 아키텍처를 함께 지원해야 하는 서비스에서 특히 중요합니다.
  • 핵심은 "로컬에서 되면 끝"이 아니라, 어떤 플랫폼에서 실행될 것인지까지 빌드 단계에서 고려하는 것입니다. Docker 학습이 배포 현실과 만나는 지점입니다.

빠른 정리

요소의미
buildx확장 빌더
--platform대상 아키텍처 지정
multi-platform image여러 아키텍처를 담은 이미지 묶음
잘 맞는 상황amd64/arm64 동시 지원

주의할 점

buildx로 여러 플랫폼을 한 번에 빌드해도, 애플리케이션 자체가 특정 아키텍처 바이너리에 의존하면 여전히 실패할 수 있습니다. 이미지 빌드 성공과 애플리케이션 이식성은 별개의 문제라는 점을 같이 봐야 합니다.

참고 링크

2 sources