45
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

M1Mac環境でDockerのMySQLを動かす

 概要

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アーキテクチャ」に対応したイメージをビルドする

docker コマンドの場合

--platformオプションを追加する


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

Dockerfileの場合

--platformmオプションを追加する

Dockerfile
FROM --platform=linux/x86_64 mysql:8.0
(省略)

docker-compose.ymlの場合

platformセクションを追加する

docker-compose.yml
version: "3"
services:
  db:
    image: mysql:8.0
    platform: linux/x86_64
(省略)

備考

いけるちゃーいけてる状態である。

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
45
Help us understand the problem. What are the problem?