M1 MacでDockerを使用していて遭遇する可能性のあるエラー、「no matching manifest for linux/arm64/v8 in the manifest list entries」について対応策をお伝えします。このエラーメッセージは、DockerイメージがあなたのCPUアーキテクチャに対応していないときに表示されます。
エラー発生の状況
まずはじめに、私が遭遇した状況を共有します。以下のようなdocker-compose.yml
ファイルを用意し、docker-compose up --build
コマンドを実行しました。
version: "3"
services:
...
db-service:
image: mysql:8.0.28
...
しかし、上記のコマンドを実行すると、以下のようなエラーメッセージが表示されました。
no matching manifest for linux/arm64/v8 in the manifest list entries
このエラーメッセージが表示される原因とその対処法について次のセクションで解説します。
エラーメッセージの原因とその対処法
このエラーメッセージは、「指定されたDockerイメージが現在使用しているCPUアーキテクチャに対応していない」という意味を持ちます。具体的には、M1 MacのCPUはARMアーキテクチャを採用していますが、ここで指定したmysql:8.0.28
イメージはARM版が存在しないためにこのエラーが発生しました。
この問題に対する一つの解決策は、platform
オプションを使用して明示的にイメージのアーキテクチャを指定することです。以下のようにdocker-compose.yml
ファイルを編集します。
version: "3"
services:
...
db-service:
image: mysql:8.0.28
platform: linux/amd64
...
もう一つの解決策として、ARMアーキテクチャに対応した別のDockerイメージを使用する方法があります。例えば、mysql/mysql-server:latest
イメージはARMアーキテクチャに対応していますので、以下のようにイメージ名を変更することでこのエラーを解消できます。
version: "3"
services:
...
db-service:
image: mysql/mysql-server:latest
...
以上、M1 MacでDockerを使う際に遭遇する可能性のある「no matching manifest for linux/arm64/v8 in the manifest list entries」エラーの対処法をご紹介しました。Dockerを使う上で、自身の環境とイメージのアーキテクチャが一致していることを確認することは重要なポイントです。