본문 바로가기

OpenSource/Docker

[Docker] Apple M1, M2 CPU 도커 빌드 에러 해결

애플이 Intel CPU에서 자체 개발한 m1, m2 CPU를 탑재하게 되면서 발생하는 도커 문제 해결법에 대해 정리해보고자 한다.

문제1: /bin/sh: exec format error 에러 발생시

애플 m1 CPU에서 이미지 빌드후 Intel CPU가 장착된 장비에서 도커를 수행할 때 발생되는 문제이다.

docker inspect {도커 이미지} | grep Architecture

검색된 결과를 보면 arm64 로 빌드되어있는것을 확인할 수 있는데, intel CPU에서 동작시키려먼 아키텍쳐가 amd64 이어야 한다.

해결방법:

도커 빌드시 platform을 지정하여 빌드한다.

docker build --platform linux/amd64 -t {빌드 태그} .

문제2: ERROR [internal] load metadata for [docker.io/library/openjdk:8u342-jre]

전체 에러 내용

ERROR [internal] load metadata for [docker.io/library/openjdk:8u342-jre](http://docker.io/library/openjdk:8u342-jre)

failed to solve with frontend dockerfile.v0: failed to create LLB definition: no match for platform in manifest sha256:667a15e7bc533a90fb39ddb7e5bed63162ac3c13a97e6c698bf4f139f51b7d33: not found

Dockerfile의 from 부분에 platform 지정

FROM --platform=linux/amd64 openjdk:8u342-jre