CPU 아키텍처에 따른 도커
Q. 도커 이미지는 Intel CPU만 지원하나요?
아니요. 도커 이미지는 빌드된 환경의 CPU 아키텍처에 따라 각각 다르게 만들어집니다.
도커 허브에 올라온 공식 이미지들은 다양한 아키텍처(x86-64, ARM64 등)를 지원하며, 같은 이미지 이름으로 여러 플랫폼 버전이 함께 업로드되어 있습니다.
예를 들어 mysql:latest
이미지를 docker pull
하면, 도커는 기본적으로 현재 실행 중인 머신의 CPU 아키텍처에 맞는 이미지를 자동으로 받아옵니다.
최근에는 도커 허브 UI에서도 Linux
, x86-64
, ARM64
등 해당 이미지가 지원하는 아키텍처 정보를 쉽게 확인할 수 있습니다.
만약, 현재 머신과 다른 아키텍처의 이미지를 명시적으로 받고 싶다면 --platform
옵션을 사용하면 됩니다:
이렇게 하면 ARM64용 MySQL 이미지를 강제로 받아올 수 있습니다.
🚩 빌드 전략
컴퓨터의 CPU는 자신의 아키텍처에 맞는 바이너리만 실행할 수 있습니다. 예를 들어, x86 기반 CPU에서는 ARM용 바이너리를 실행할 수 없고, 그 반대도 마찬가지입니다.
그렇다면 Intel(x86) 시스템에서 ARM용 바이너리를 실행하려면 어떻게 해야 할까요?
이때 사용할 수 있는 방법이 바로 QEMU 에뮬레이터입니다.
🛠️ QEMU 에뮬레이터 전략
QEMU는 CPU 아키텍처를 에뮬레이션하여, 서로 다른 아키텍처의 바이너리를 실행할 수 있게 해주는 도구입니다. 도커 빌드 시 QEMU를 이용하면 ARM, x86_64 등 다양한 플랫폼용 이미지를 한 번에 빌드할 수 있습니다.
장점
Dockerfile
을 수정하지 않고도 여러 플랫폼용 이미지를 쉽게 빌드할 수 있습니다.buildx
와 함께 사용하면 멀티 플랫폼 이미지를 자동으로 생성할 수 있습니다.
단점
실행 속도가 느릴 수 있습니다. (지속적으로 아키텍처 명령어를 변환하기 때문)
간혹 에뮬레이션 계층(QEMU)에서 발생하는 버그로 인해 정상 작동하지 않는 경우도 있습니다.
Last updated