概要
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 を利用することでプラットフォームを指定できます。
以上です。