kakts-log

programming について調べたことを整理していきます

Apple Silicon macで公式のDocker MySQLイメージを利用する

MySQL公式が Apple Silicon用のMySQLイメージをサポート

Apple Silicon (ARM 64) Macが出てから、DockerではARM64用の公式MySQLイメージが用意されておらず、 --platform linux/amd64 を指定してIntel用イメージをエミュレーションするか、代わりにmariadb イメージを利用する必要がありました。

docs.docker.com

最近、ようやくMySQL8.0において、MySQL公式でARM64版のMySQLイメージが利用可能になりました。 www.emmanuelgautier.com

利用方法

Apple silicon対応のMySQLイメージを利用するには、上記のページで紹介してあるように2通りあります。

  • arm64v8/mysqlを利用する。
  • mysql/mysql-serverイメージで、Oracleによってメンテナンスされているタグを指定する

確認したところだと、8.0系のみ対応しているようです。

arm64v8/mysqlイメージを利用する

https://hub.docker.com/r/arm64v8/mysql/ arm64v8は、arm64用に作成されたイメージをまとめたリポジトリで、MySQL以外にもあります。 現時点では、MySQL8系をサポートしています。

mysql/mysql-serverイメージで、Oracleによってメンテナンスされているタグを指定する

従来通り、MySQL公式のmysql/mysql-serverイメージで、Oracleによってサポートされているタグを指定します。 arm64v8/mysqlと同様のタグ名で、OS/ARCHの項目が linux/arm64/v8になっているものを指定します。

以上となります。

起動したイメージのアーキテクチャ確認

ためしに、linux/arm64/v8に対応しているmysql/mysql-server:8.0.27 イメージタグを指定してみます。 https://hub.docker.com/layers/mysql/mysql-server/8.0.27/images/sha256-f9c95e7df7a8514e0d1b8d24375d2b952387e3293e225f2ba3beb2dc5d456e04?context=explore

docker-compose.yamlの抜粋ですが、下記のような感じで指定します。 platform項目は指定しません。

services:
  # MySQL db
  db:
    image: mysql/mysql-server:8.0.27

これでイメージをpullした後、イメージの情報を確認すると、Architectureの項目がarm64になっていることを確認できます。

$ docker image inspect mysql/mysql-server:8.0.27 | jq '.[0].Architecture'
"arm64"

以上となります。