M1 MacでDockerのMySQLコンテナが立ち上がらない問題の解消法

プログラミング

こんにちは。いっちー(@tetestkake_blog)です!

話題のM1 Macを買ってみたはいいものの、MySQLコンテナが立ち上がらない問題に遭遇しました。

しばらく調べたうちに解決することができたので、この記事ではMySQLコンテナが立ち上がらない問題の解消法を紹介します。

結論だけ知りたい人向け
  • platformをlinux/x86_64と指定することでM1 MacでもMySQLコンテナを使用することが可能になる!
スポンサーリンク

MySQLコンテナを起動するとエラーが発生

M1 Macを購入した際、MySQLコンテナを立ち上げると以下のエラーに遭遇しました。

$ docker run -d -e MYSQL_ROOT_PASSWORD=password mysql:8.0
Unable to find image 'mysql:8.0' locally
8.0: Pulling from library/mysql
docker: no matching manifest for linux/arm64/v8 in the manifest list entries.
See 'docker run --help'.
いっちー
いっちー

「no matching manifest for linux/arm64/v8 in the manifest list entries」 !??

何が起きたんだ…!?

Docker公式リファレンスを確認

Docker公式リファレンスを確認します。

公式によると、CPUアーキテクチャの違いからMySQLのイメージM1 Macでは現状利用できないと書いてあります。

ARM64アーキテクチャー向けのイメージがすべて利用可能となっているわけではありません。 Intelイメージの実行には、エミュレーションのもとで--platform linux/amd64をつけて実行することが必要です。 特にmysqlイメージは ARM64 向けには利用できません。 これに対する当面の対処としてはmariadbイメージを利用してください。

https://matsuand.github.io/docs.docker.jp.onthefly/docker-for-mac/apple-silicon/
いっちー
いっちー

公式にはmariadbイメージを利用してくださいとあります。

なんとかMySQLを使い続けることはできないものか。。。

解消法

公式リファレンスをよく読んだら、「エミュレーションのもとで--platform linux/amd64をつけて実行することが必要です」と記述があったので、

この方法で挑戦してみると見事コンテナが立ち上がりました!

Dockerコマンド

オプションにてplatformを指定します。

docker run -d --platform linux/x86_64 -e MYSQL_ROOT_PASSWORD=password mysql:8.0

Dockerfile

FROMにてplatformを指定します。

FROM --platform=linux/x86_64 mysql:8.0
# 以下省略

Docker Compose

platform: linux/x86_64を追加します。

version: '3'
services:
  sample-db:
    image: mysql:8.0
    # for m1 mac
    platform: linux/x86_64
    # 以下省略
いっちー
いっちー

上記の記述を追記するとコンテナが起動できる様になります!

最後に

platformをlinux/x86_64と指定することで、M1 MacにてMySQLコンテナを使用することが可能になります。

公式がmariadbを使用してくださいとアナウンスしているのでベストではないかもしれませんが、

MySQLコンテナはM1 Macでも使用することができそうです。

参考リファレンス

Docker関連おすすめ書籍

コメント

タイトルとURLをコピーしました