💡
Oracle Cloud Always Free枠のARMインスタンスのDockerでMySQLのコンテナを動かす
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が来てるじゃん…
Discussion