この記事の目的
M2チップ搭載のMac上でDocker+Lima環境を用いてMySQL5系を動かそうとした際、
ちょっと躓いた点があったので、備忘録として
動作環境
PC: MacBook Air (M2, 2022)
OS: macOS Ventura 13.7.2
躓いた点その1
brewコマンドでLimaをインストール後、
LimaのGithubからdocker用の起動テンプレートを入手して、
Limaの起動には成功。
ところが、dockerで--platform
オプションを付けてもエラーが出て、AMD64用のMySQL5.6コンテナが起動しません。
公式ドキュメントを確認したところ、docker.yamlの記述では、デフォルトでRosettaが有効になっていないため、明示的にRosettaを有効にする必要があります。
以下の記載をyamlファイルに追記すればOKです。
vmType: "vz"
rosetta:
enabled: true
binfmt: true
躓いた点その2
2025年1月現在、Limaのdocker.yamlテンプレートではOSがUbuntu24.04になっていますが、
こちらのバージョンに搭載されているカーネルのバージョンとMacOS 13に搭載されているRossettaの相性の問題で、Dockerコンテナが動かない現象が報告されているようです。(こちらソース元リンクを紛失したので後で追記します)
既にApple側で対応済とのことですので、MacOSを14以上にアップデートするか、どうしてもOSを更新できない場合は、古いカーネルであれば問題なく動くらしいので、古いカーネルを使用しているUbuntu22.04あたりを使用するよう、docker.yaml内の記述を修正すれば解決するようです。(自分はやむなく後者で対応しました)
images:
- location: "https://cloud-images.ubuntu.com/releases/22.04/release/ubuntu-22.04-server-cloudimg-arm64.img"
arch: "aarch64"
さいごに
ある程度古い環境を最新版の端末、OSで動かす必要性というのはたまに出てきますが、数年前、場合によっては数ヶ月前に出来た方法がミドルウェアのサポート切れなどによって再現できなくなる状況というのは、やはりどうしても出てきます。私が躓いたこの備忘録が誰かの一助となれば幸いです。