💡

Oracle Cloud Always Free枠のARMインスタンスのDockerでMySQLのコンテナを動かす

2022/02/24に公開

Oracle Cloud Always Free枠のARMインスタンス(VM.Standard.A1.Flex)にインストールしたDockerでMySQLのコンテナを動かそうとするとエラーが出て起動できない。

$ docker run --name test-mysql -e MYSQL_ROOT_PASSWORD=test-pwd --platform=linux/x86_64 -d mysql:8
$ docker logs test-mysql
standard_init_linux.go:228: exec user process caused: exec format error

これは、MySQL公式のDockerイメージはx86_64(amd64)しか用意されていませんが、ARMインスタンスはaarch64(arm64)しか実行できないためです。

MariaDBにはaarch64のイメージがあるのでこちらを使う手もありますが、どうしてもMySQLを使いたい場合、以下のコマンドでQEMUをインストールすると、エミュレーションでx86_64のイメージも実行できるようになります。
(筆者の環境はUbuntuなのでOracle Linuxの場合、適宜読み替えてください)

$ sudo apt install qemu-user-static

MySQLが動く!!

$ docker run --name test-mysql -e MYSQL_ROOT_PASSWORD=test-pwd --platform=linux/x86_64 -d mysql:8
$ docker exec -it test-mysql sh
# uname -a
Linux 0801508dd0fe 5.11.0-1028-oracle #31~20.04.1-Ubuntu SMP Wed Jan 26 14:20:52 UTC 2022 x86_64 GNU/Linux

※追記
せっかく書いたのに、早速arm64なMySQLが来てるじゃん…
https://hub.docker.com/layers/mysql/library/mysql/oracle/images/sha256-b156b996b09d1509a78a84dd5a71cf673b5ff60c3ae22c27194e62ac2a7d1266?context=explore

Discussion