archコマンドでマシンのアーキテクチャを表示できる。

arch on Apple Silicon

Apple Silicon macで打った場合の結果はこうなる。

$ arch
arm64

ちなみに Intel mac だとこうなる。

$ arch
i386

なおman archすると下記のように説明されていた。

  • i386 32-bit intel
  • x86_64 64-bit intel
  • x86_64h 64-bit intel (haswell)
  • arm64 64-bit arm
  • arm64e 64-bit arm (Apple Silicon)

ちなみに Intel mac が i386 と出力するのはそういうもんらしい。

Unfortunately, that’s just the way arch works on OS X. With current OS X systems, arch reports i386 for Intel architectures that are capable of running 32-bit;

ref. macos - OS X arch command incorrect - Stack Overflow

Intel macで uname -m を聞くと下記のようになる。

$ uname -m
x86_64

Docker の場合

ARM対応しているdockerイメージであれば下記のように出力される。

$ docker run mysql:8.0 arch
aarch64

aarch64 は ARMアーキテクチャであるということ。

AArch64またはARM64は、ARMアーキテクチャの64ビット命令セットである。

ref. AArch64 - Wikipedia

一方、armアーキテクチャ非対応のdockerイメージだと下記のように WARNING が出て、x86_64と出力される。

$ docker run mysql:5.7 arch
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
x86_64

WARNING 解消のためには、 --platformオプションを明示すればOK。

$ docker run --platform linux/amd64 mysql:5.7 arch
x86_64