Closed4

M2 Mac で AMD用Dockerイメージを build するときの注意

kagamirrorkagamirror

なにかしら既存のDockerfileがあるとして、それを M1 / M2 の Mac で Dockerイメージをビルドしようとしたとき、x86_64 not compatible みたいな雰囲気のエラーが出てビルドに失敗することがある。

kagamirrorkagamirror

Dockerfile 中で x86_64 に依存したパッケージのインストールなどを行っている場合、armアーキテクチャのM1 / M2 の Mac ではビルドに失敗してしまう、ということである。

kagamirrorkagamirror

解決策

マルチアーキテクチャに対応したイメージを作り直すのが抜本的な対策っぽいが、それはめんどうなので、面倒じゃないやつをいくつかメモ。

①Dockerfileに --platform を指定する

これは微妙。
このDockerfileがGit等で管理されている場合、他の人に影響が出る。

FROM --platform=linux/amd64 ubuntu:20.04

②環境変数を使う

buildを行う前に環境変数に値を設定しておく。
忘れそう。

export DOCKER_DEFAULT_PLATFORM=linux/amd64

③build時のオプションに指定する

②とあんまり変わらないが、基本これで良さそう。

docker build --platform linux/amd64 -t hoge_image .
このスクラップは2023/05/18にクローズされました