gitlab CI runner를 통해서 ****build된 이미지는 linux/amd64 image이다.
맥북과 운영중인 k3s 클러스터는 - arm기반 아키텍처이므로 linux/arm64/v8 이미지가 필요하다.
arm 기반 맥북 docker desktop에서는 amd64 이미지를 로제타 시뮬레이터로 구동이 가능하다.
아래 사진 처럼 자동으로 로제타 시뮬레이터로 실행 시켜주고 WARNING경고문구를 띄운다.
k3s 머신에서는 docker desktop도 사용하지 않고 당연히 로제타 시뮬레이터도 없다.
amd64 이미지로 실행하면 아래 처럼 바이너리파일 실행 오류가 난다.
컨테이너 기술은 호스트의 커널에 종속적이다.
호스트의 아키텍처는 호스트의 커널보다 더 아랫단이므로, 아키텍처가 달라지면 바이너리파일을 해석하는 방식도 달라지기 때문에 위처럼 다른 아키텍처에서 생성된 바이너리파일을 실행할 수 없다.
찾아보니 docker에 multi platform build를 할 수 있는 기능이 있었다. (image builder로는 docker가 정말 기능이 많은 것 같다.)