概要
M1 Mac 上で x86_64
(amd64
) 向けのものしかない Docker イメージを使おうとすると、以下のように怒られます。要するに ARM 向けには用意されていないよ〜〜という内容です。
docker run なんかのイメージ uname -m
# ...
docker: no matching manifest for linux/arm64/v8 in the manifest list entries.
See 'docker run --help'.
筆者が最近遭遇したものだと Haskell の公式イメージがこれにあたります。
本稿では、このようなイメージを M1 Mac 上で動かす方法を残しておきます。
Docker CLI をそのまま使うとき
docker run
にプラットフォーム指定 (--platform=linux/amd64
) をつける。
docker run -it --rm --platform=linux/amd64 ubuntu uname -m
# x86_64
Dockerfile を使うとき
CLI と同じように、 FROM
インストラクションに --platform
オプションをつけることができます。
FROM --platform=linux/amd64 ubuntu
CMD uname -m
# x86_64
まとめ
上に書いた二つの方法のほかに、イメージのハッシュを直接指定する方法などもあると思います。
また、 docker compose を使用する場合も Dockerfile を利用することでプラットフォームを指定できます。
以上です。