-
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가 뭔가 싶어 찾아봤는데 에뮬레이터, 하이퍼바이저 같은 낯선 단어들이 등장했다. 하이퍼바이저, 에뮬레이션, 시뮬레이션 등의 개념을 이해하는데 도움이 된 글 하나 를 공유한다.
[네이버클라우드 기술&경험] 가상화 개념 이해하기#1, QEMU vs KVM
Part.1에서는 QEMU와 KVM을 비교함으로써 가상화에 대한 기본 개념을 이해하고, I/O 가상화 작동 원리를 간략히 알아보고, Part. 2에서는 I/O 가상화의 성능을 높이기 위한 솔루션인 SPDK에 대해 알아보
medium.com
내가 이해한 대로 써보면 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