## 概要
M1Mac環境でMySQLを起動しようと思ったら下記のようなエラーが出た。
$ docker run -d --rm -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.
この記事はM1MacでDockerを使ってMySQLのコンテナを立ち上げるためのものです。
事前準備
Docker Desktop(Preview)をインストール済
理由
M1Macのプラットフォームはarm64。
mysqlイメージのサポートプラットフォームはamd64。
イメージをプルする際に実行環境のプラットフォームに合わせて自動的にamd64のイメージを取得し、エラーになっている。
解決策
--platformオプションを付与して、明示的にamd64のイメージを取得する。
--platformオプションによって、どのプラットフォーム (OSおよびCPUアーキテクチャの組み合わせ) に対応したイメージを生成するのかを指定します。
ここでは「Linux/AMD64」と「Linux/ARM64」という2通りのプラットフォームを指定しています。
ちなみに、--platformオプションを省略した場合は、ビルドを実行する環境のOS/CPUアーキテクチャが自動的に指定されます。
引用元: [Dockerの「マルチCPUアーキテクチャ」に対応したイメージをビルドする]
(https://dev.classmethod.jp/articles/docker-multi-architecture-image-build/)
docker コマンドの場合
--platformオプションを追加する
$ docker run -d --rm --platform linux/x86_64 -e MYSQL_ROOT_PASSWORD=password mysql:8.0
Dockerfileの場合
--platformmオプションを追加する
FROM --platform=linux/x86_64 mysql:8.0
(省略)
docker-compose.ymlの場合
platformセクションを追加する
version: "3"
services:
db:
image: mysql:8.0
platform: linux/x86_64
(省略)
備考
いけるちゃーいけてる状態である。
参考