12312 qemu: uncaught target signal 11 (Segmentation fault)
InnoDB: Linux Native AIO interface is not supported on this platform. Please check your OS documentation and install appropriate binary of InnoDB.
問題如上
一般來說,拉取mysql8是沒問題的,因為mysql8有官方的amd64鏡像,但是mysql5.7是沒有的, 所以需要借助qemu,實際上加個架構參數就可以:
--platform=linux/x86_64
用上面的這個方法跑了一年多沒有問題,最近因為其他需求升級了下docker desktop到最新(4.31) ,這時mysql容器就有了文章最開頭的問題。一開始搜到的解決方案是回滾到舊版本,但是另一個需求又需要新版本的docker desktop, 就尬住了
研究了下,解決方案就是用rosetta, 這是一個能在arm64上運行x86/64指令集的一個指令翻譯的東西,把這個rosetta通過下面這個命令下載下來
/usr/sbin/softwareupdate --install-rosetta --agree-to-license
然后把docker desktop->General 里面的
Use Rosetta for x86_64/amd64 emulation on Apple Silicon
Turns on Rosetta to accelerate x86_64/amd64 binary emulation on Apple Silicon. Note: You must have Virtualization framework enabled.
這個選項打勾, 重啟docker desktop就可以了, 如果沒有這個選項,說明你的docker desktop太久了或者mac os太老了,盡快升級吧!
ref link:?Mac M1 - after upgrade to Docker Desktop 4.27.1 docker container with java fails with qemu: uncaught target signal 11 (Segmentation fault) - core dumped · Issue #7172 · docker/for-mac (github.com)