-
M2 기반 환경에서 mysql 5.7 도커 컨테이너로 띄우기 - qemu: uncaught target signal 11 (Segmentation fault)기타 2024. 5. 4. 18:26
틀린 내용이 있을 수 있습니다.
발견하시면 말씀 부탁드립니다! 🙇
요약: M2 기반에서 도커 컨테이너로 Mysql 5.7 사용하시려면 OS 버전은 14.x로 업데이트하세요.
회사에서 어떤 프로젝트에 대해 확인할게 있어 로컬에서 실행하려 하니 해당 프로젝트는 mysql 5.7 버전을 사용하고 있었다. 업무용 PC에는 mysql 8 버전을 설치했기 때문에, 도커 컨테이너를 띄워 DB를 사용하기로 했다. docker-compose.yml 파일에 DB 서비스를 추가하고 실행했는데 no matching manifest for linux/arm64 에러와 함께 컨테이너 생성부터 실패했다.
도커 공식 이미지 사이트에서 확인하니 mysql 5.7 버전은 arm64 아키텍쳐를 지원 안 하고 있었고, 이 때문에 이미지를 pull 받을 수 없어 컨테이너 생성조차 못한 것 같다.
yml 파일에 플랫폼을 linux/amd64로 지정하고 다시 실행하니 컨테이너 생성은 됐으나 qemu: uncaught target signal 11 (Segmentation fault) 에러가 발생했다. qemu가 뭔가 싶어 찾아봤는데 에뮬레이터, 하이퍼바이저 같은 낯선 단어들이 등장했다. 하이퍼바이저, 에뮬레이션, 시뮬레이션 등의 개념을 이해하는데 도움이 된 글 하나 를 공유한다.
내가 이해한 대로 써보면 qemu은 에뮬레이터인 하이퍼바이저로서, 우리들이 사용하는 PC의 호스트 OS 위에 다른 OS를 띄워주는 소프트웨어다. M2는 arm 아키텍처 기반인 관계로 linux/amd64 아키텍처를 갖는 CPU를 작동시키기 위해 qemu 소프트웨어를 실행하는데, 이때 Segmentation fault 에러가 발생한 것이다. 참고로 Segmentation이란 운영체제에서 사용하는 메모리 보호 및 관리 기법, Segmentation fault는 잘못된 메모리 참조 때문에 발생하는 에러라고 한다. 요약하면 qemu이 동작하면서 허용되지 않은 메모리 영역을 건드렸고 이걸 Mac OS가 막으면서 에러가 발생한 것 같다.
왜 에러가 났는지는 대충 알겠는데 어떻게 해결해야 하는지는 여전히 모르겠어서 계속 구글링을 했다. 그러던 중 비슷한 상황에서 OS를 업데이트하니 에러가 안 났다는 댓글이 보였다. 큰 기대 없이 OS 업데이트를 걸어둔 후 퇴근했고 다음날 출근해서 확인하니 정상적으로 컨테이너 실행이 되는 걸 확인했다. 삽질한 것에 비해 허무하게 해결되었지만 어쨌든 만세😎.
참고 자료
- https://medium.com/@132262b/mysql-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B0%B1%EC%97%85-dump-%EB%82%B4%EB%B3%B4%EB%82%B4%EA%B8%B0-%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0-docker%EB%A5%BC-%EA%B3%81%EB%93%A4%EC%9D%B8-e2bb3730bcce
- https://medium.com/@132262b/mysql-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B0%B1%EC%97%85-dump-%EB%82%B4%EB%B3%B4%EB%82%B4%EA%B8%B0-%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0-docker%EB%A5%BC-%EA%B3%81%EB%93%A4%EC%9D%B8-e2bb3730bcce
- https://github.com/docker/for-mac/issues/7172
- https://doinge-coding.tistory.com/entry/MySQL-mysqldump-%EB%AA%85%EB%A0%B9%EC%96%B4-mysql-%ED%8A%B9%EC%A0%95-DB-%EB%8D%A4%ED%94%84-%EB%B0%8F-%EB%B3%B5%EA%B5%AC-%EB%B0%A9%EB%B2%95
- https://ko.wikipedia.org/wiki/%EC%84%B8%EA%B7%B8%EB%A9%98%ED%85%8C%EC%9D%B4%EC%85%98_%EC%98%A4%EB%A5%98
- https://codingfriend.tistory.com/18
'기타' 카테고리의 다른 글
2023년 회고 (0) 2023.12.31 퇴사한지 3개월이 훌쩍 지난 시점에서 쓰는 회고 (0) 2023.03.31 Node.js 프로젝트 수동 배포 (0) 2023.03.27 비인증 결제 백엔드 개발할 때 만난 이슈와 삽질 기록 (0) 2022.12.29 [AWS] Lambda + API Gateway 사용기 ☁️ (0) 2022.09.18