기본 패턴
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