데이터 공부/Kubernetes
Mac M1에서 빌드한 이미지 - exec format error 해결 방법
한소희DE
2022. 6. 14. 23:22
배경 및 이슈
Logstash에 대한 도커 이미지를 빌드한 뒤, 쿠버네티스를 통해 deploy하려고 하였다.
이미지 빌드/푸시 시 에러가 뜨지 않았기 때문에 문제가 없을 것이라고 생각했는데,
pod 가 제대로 실행되지 않아 로그를 살펴보니 아래와 같은 에러가 발생했다.
standard_init_linux.go:228: exec user process caused: exec format error
원인
구글링 결과 이 원인은 매우 간단했다.
바로 m1 의 docker build image 기본 설정이 arm64이기 때문에, 포맷이 맞지 않아 발생한 것.
실제로 내가 빌드했던 이미지의 아키텍처 설정이 arm64인지 확인하기 위해서는 docker inspect 로 알 수 있다.
docker inspect <docker_image>
그 결과는 아래와 같다.
"Architecture": "arm64",
"Os": "linux",
해결 방법
따라서 이 문제는 docker image를 빌드할 시, --platform=linux/amd64 옵션을 주어 간단히 해결할 수 있다.
docker build --platform=linux/amd64 <기타 옵션>
이렇게 이미지를 re-build/push 후, 다시 deployment 를 apply 하면 제대로 실행된다.