M1 MacでのECRへのpushで ここに気をつけろ❗️


要点

  • CodeBuild でエラー。何が起きたか気づきにくい
    standard_init_linux.go:211: exec user process caused "exec format error"
  • amd64 のダイジェストを指定してpullしましょう

内容

2020年から Docker Hub の Pull回数制限がかかり、
回避のためにローカルからpushする方などいるのではないでしょうか。

M1 Macでも いつもの通り、
$ docker pull XX:XX
と普通に pull してしまうかもしれませんが、

対象のimageがマルチCPUアーキテクチャ対応だと、
自動選択で arm のイメージを持ってきてしまいます😱

ですので、amd64 のダイジェストを指定してpullしましょう。

php imageでの簡易例

  1. Tagsタブ -> OS/ARCH のlinux/amd64 を選択

  2. DIGEST: の右をコピー

  3. 以下のように pull する

    $ docker pull php:fpm-alpine3.13@sha256:4b90222a821ef24358d305cbe51ff65f31edea6e323b06f40ee1f800401ebaf0
    
  4. 試しに run で確認して、arm や aarch という文字列がなければOK

    $ docker run 932a0ce9593c uname -a
    Linux 2309aaa4729b 4.19.121-linuxkit #1 SMP Tue Dec 1 17:50:32 UTC 2020 x86_64 Linux