0
0

M1以降(M2,M3)MacからビルドしたDockerイメージをECSやAppRunnerで動かすときのメモ

Posted at

毎回M1MacでビルドしたDockerイメージからコンテナで動かそうとした時に躓くのでメモ。
M1 Mac環境ではdocker buildするとデフォルトでARMのイメージが作成される。

ECSはARM64とX86_64が選択できるのでまだ良いが、AppRunnerはARM64をサポートしていないので、デフォルトのままではエラーとなる。

ちなみにCahtGPTに聞いてみた。

x86_64

•	概要: x86_64は、64ビットの拡張命令セットを持つx86アーキテクチャです。x86アーキテクチャの拡張版として、より大きなメモリ空間とより多くのレジスタをサポートしています。
•	開発元: 主にインテルとAMD。
•	使用例: 主にデスクトップコンピュータやサーバーなどの高性能なコンピュータで使用されます。
•	特性: 32ビットのソフトウェアとの互換性があり、長い間パソコンの標準アーキテクチャとして広く普及しています。

amd64

•	概要: amd64は、AMDが開発した64ビット拡張命令セットで、x86_64と互換性があります。
•	開発元: AMD。
•	使用例: ほぼx86_64と同義で、同じ用途や機器で使用されます。
•	特性: AMDが自社製品向けに策定した名称で、x86_64と同じものとして扱われます。64ビットコンピューティングを可能にし、より大きなメモリとパフォーマンスの向上を実現します。

ARM64

•	概要: ARM64は、64ビットのARMアーキテクチャです。モバイルデバイスや組み込みシステム、エネルギー効率が求められる環境で広く使われています。
•	開発元: ARM Holdings。
•	使用例: スマートフォン、タブレット、Raspberry Pi、Appleの最新のMシリーズチップなど。
•	特性: 省電力で効率的な設計が特徴で、モバイルデバイスや省電力が求められる場面で優れています。アーキテクチャはRISC(Reduced Instruction Set Computer)に基づいており、シンプルな命令セットで高効率を実現します。

設定方法

具体的な設定方法は2つ。

1. Dockerfileで--platform=〇〇で指定する。

FROM --platform=linux/arm64 nginx:latest

2 docker buildコマンドの際に指定する。

.zsh
$ docker build --platform 00

ちなみに指定できるアーキテクチャは以下。

個人的にはDockerfileに書いておいた方が色々楽そう。(どちらもCIでやる場合はあまり変わらないか、、)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0