こまぶろ

技術のこととか仕事のこととか。

MacでDocker Desktop4.27.0に上げたらMySQL 5.7(amd)のコンテナが動かなくなった場合の対処法

追記

Docker Desktop は runcの脆弱性対応で2024/2/2現在の最新はv4.27.1になっています。

www.docker.com

環境

事象

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"にチェックをつけて再起動すればよい。

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以降ではデフォルトで有効になっているとのことです。

www.publickey1.jp

良い子のみんなは早くMySQL 5.7を脱却して8.0に行きましょう