Docker hub からイメージを pull する時、CPUのアーキテクチャを指定する。


Docker hub にて、イメージを選択した時に出てくる、この項目。

気になって調べてみたら、pull する時、イメージのCPUアーキテクチャを指定する事ができるみたいです。

参考までに、Docker のマニュアル(docker pull)が、こんな感じになってます。
https://docs.docker.com/engine/reference/commandline/pull/

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

TAG を指定する方法の他に、DIGEST を指定する方法もあるみたいです。

今回のケースの場合、DIGEST は、この部分。

DIGESTを指定して pull する時、こんな感じなります。

docker pull php@sha256:84311597ecddef820dfab8893acbcdc1f1b3b545decfedf791aa7b99429206df

「:」ではなく「@」を使い、「sha256~」のあたりから書き始めます。

試しに、php:7.4.7-fpm-buster の各種アーキテクチャで実験してみました。

docker-compose.yml
version: '3'
services:
  # linux/amd64
  app01:
    image: php@sha256:cf3f0f13f1726595bdee10ece07c788b54e3f491817ae1b274931d5520af2d47
  # linux/ppc64le
  app02:
    image: php@sha256:89a021692e04f3e88a574e918ecf2b620465d70f936ab9d2cd17cdf99bf8cd87
  # linux/386
  app03:
    image: php@sha256:5846a11aa9541b93c07160af0359a2650842e914f2e23a0f77c123945b0670bf
  # linux/s390x
  app04:
    image: php@sha256:250e769a4d0eb7502e7aa73d7c5151129f6a07931467ba16b4c930f2ba942d2c
  # linux/arm/v7
  app05:
    image: php@sha256:84311597ecddef820dfab8893acbcdc1f1b3b545decfedf791aa7b99429206df
  # linux/arm64/v8
  app06:
    image: php@sha256:a8a5be3677f3e25dde3cb9b528535b8493d9c4a4e99b7a56d622e5638c7c307b
  # linux/arm/v5
  app07:
    image: php@sha256:8e95f90bba6652bb5a42291a46a17923dcadd6cabf69fda594aba1be2a9b6555

以下、コンテナの中に入って、arch コマンドでアーキテクチャを出力した時の内容です。

#linux/amd64
x86_64

# linux/ppc64le
ppc64le

# linux/386
x86_64

# linux/s390x
s390x

# linux/arm/v7
armv7l

# linux/arm64/v8
aarch64

# linux/arm/v5
armv7l

マニュアルを読んでも、DIGEST は、「イメージの一意の値を表すもの」という表現しかなく、CPU については触れていないので、ちょっと分かりづらい気がする。