실리콘 맥에서 Docker를 빌드할때 기본적으로 arm64 아키텍쳐 이미지로 도커가 빌드됩니다.
하지만 아직까지 arm64 아키텍쳐가 과도기인 환경에서는 필수불가결하게 amd64(x86_64) 이미지가 필요할때가 있습니다. 이러한 문제를 해결하기 위해 임시적으로 x86으로 빌드하는 방법들을 공유하려고 합니다.
해당 글은 Docker Desktop for m1 - 3.3.0(62345) 에 작성된 글입니다.
테스트를 위한 Dockerfile을 미리 생성해놓습니다.
cat <<EOF > Dockerfile
FROM ubuntu:18.04
RUN cat /etc/os-release
EOF
임시로 docker 빌드 시에 platform
을 명시해주는 방법입니다.
docker build -t my-ubuntu:x86_64 --platform linux/amd64 .
docker run -it --rm my-ubuntu:x86_64 uname -m
> x86_64
빌드된 도커 컨테이너에서 나온 uname -m
의 결과가 x86_64 인 것을 확인할 수 있습니다.
docker-compose 으로 실행할때도 동일하게 platform을 명시할 수 있습니다.
cat <<EOF > docker-compose.amd64.yml
services:
web:
build: .
command: uname -m
platform: linux/amd64
생성된 docker-compose.amd64.yml
파일으로 docker-compose 를 실행합니다.
docker-compose -f docker-compose.amd64.yml up --build
Building web
[+] Building 2.4s (6/6) FINISHED
=> [internal] load build definition from Dockerfile
... 중략
Successfully built a3f0fe160a309826127ddea2e7fdc5f8f50edea867a88f76b25991b1c30ea6d7
Starting velog_web_1 ... done
Attaching to velog_web_1
web_1 | x86_64
컨테이너에서 실행된uname -m
의 결과가 x86_64
인것을 확인할 수 있습니다.