背景
Apple Silicon (M1) チップを搭載したMac環境下でDockerを使用してMySQLサービスを立ち上げようとすると、起動失敗の事象が報告されています。
詳細なログ分析 (docker compose logs
) を行うと、以下のエラーが出力されていることが確認されます。
qemu: uncaught target signal 11 (Segmentation fault) - core dumped
このエラーは、QEMUエミュレータがApple Silicon上でのx86_64アーキテクチャのバイナリエミュレーション中にセグメンテーションフォールトを引き起こしていることを示しています。
これは、ARMアーキテクチャネイティブのプロセスがx86_64の命令セットを直接解釈しようとした際に発生する典型的な問題です。
解決策
この問題を解決するための手順は、Docker Desktopの設定を介してRosetta 2エミュレーションレイヤーを活用することです。
具体的には、以下のステップに従ってください。
- Docker Desktopアプリケーションを開き、設定にアクセスします。
これは、アプリケーションウィンドウの右上隅にある歯車アイコンをクリックすることで行えます。 - 「General」タブに進み、
Use Rosetta for x86/amd64 emulation on Apple Silicon
オプションを探し、このオプションを有効化します。
これにより、Dockerが内部的にRosetta 2を使用してx86_64アーキテクチャ用のバイナリをARMアーキテクチャ上で透過的にエミュレートすることが可能になります。 - 設定を適用後、Docker Desktopを再起動して変更を有効にします。
この手順により、M1チップ搭載Mac上でのMySQLの起動問題を回避し、Dockerコンテナ内でのサービスの安定稼働を確保できるようになります。