追記
Docker Desktop は runcの脆弱性対応で2024/2/2現在の最新はv4.27.1になっています。
環境
- MacBook Pro 2023 Apple M2 Max
- macOS: Ventura 13.6.4
- Docker Desktop v4.27.0
- Dockerイメージ: mysql:5.7(MySQL official)
事象
Docker Desktopのバージョンをv4.27.0に上げたところ、これまで使用できていたmysql:5.7のDockerコンテナが起動できなくなった。
エラーメッセージは、以下のようなもの。
2024-02-01 17:38:46 2024-02-01 17:38:46+09:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.43-1.el7 started. 2024-02-01 17:38:46 qemu: uncaught target signal 11 (Segmentation fault) - core dumped
対処法
MySQL 5.7の公式Dockerイメージにはarm版が存在せず、amd版をApple Silicon上で動作させていたが、バージョンが上がったことでqemuでは動作しなくなった模様。
qemuではなくRosettaを使うように設定を変更することで、動作するようになった。Docker DesktopのSettings > General から、"Use Rosetta for x86/amd64 emulation on Apple Silicon"にチェックをつけて再起動すればよい。
なお、macOSがMonteleyではこの設定項目が表示されずRosettaが使えないようなので、その場合はVentura以降にOSバージョンを上げればよい。また、macOS 14.1以降でDocker Desktopを動かしている場合はデフォルトでqemuではなくRosettaが使われるようになっているとのこと。
Rosetta for LinuxはAppleシリコンを搭載したMacのmacOS 13.0以降で使用可能。macOS 14.1以降ではデフォルトで有効になっているとのことです。
良い子のみんなは早くMySQL 5.7を脱却して8.0に行きましょう