【问题标题】:Unable to Build Docker Image Using GitHub Actions无法使用 GitHub 操作构建 Docker 映像
【发布时间】:2021-03-17 13:11:06
【问题描述】:

我目前正在尝试使用 GitHub Actions (CI) 构建 Docker 映像。我可以在我的机器和我相信 GitHub Actions 也运行的多个其他 x86_64 架构上成功构建它,但是在构建时,我遇到了以下问题:

standard_init_linux.go:219: exec user process caused: exec format error
The command '/bin/sh -c apt-get update && apt-get install -y build-essential psmisc ifupdown omxplayer x11-xserver-utils xserver-xorg libraspberrypi0 libraspberrypi-dev raspberrypi-kernel-headers cec-utils libpng12-dev git-core wget --no-install-recommends && apt-get clean && rm -rf /var/lib/apt/*' returned a non-zero code: 1

我在这里搜索了多个其他线程,但我找不到任何有用的东西,我不太确定还能尝试什么。任何帮助或建议将不胜感激。

相关文件:

This is the full build log

This is the Dockerfile

This is the CI file

This is the full repository

【问题讨论】:

    标签: docker continuous-integration dockerfile github-actions


    【解决方案1】:

    您的基础映像对 amd64 无效:

    $ docker image inspect balenalib/raspberry-pi-debian-node:latest-jessie
    ...
            "Architecture": "amd64", 
    ...                              
    
    $ docker run -it --rm balenalib/raspberry-pi-debian-node:latest-jessie /bin/bash
    ...
    root@2eb37d8359ed:/# dpkg --print-architecture
    armhf
    

    如果没有将 qemu 的 binfmt_misc 配置为运行其他平台的二进制文件,则该基础映像将无法在系统上运行。

    它实际上根本不是一个多平台基础映像,而是仅设计用于在具有 qemu 设置的系统上运行(注意媒体类型是清单而不是清单列表):

    $ regctl image manifest --list balenalib/raspberry-pi-debian-node:latest-jessie                                                                                                                                                                                                 
    {                                                                                                                                                                                                                                                                               
      "schemaVersion": 2,                                                                                                                                                                                                                                                           
      "mediaType": "application/vnd.docker.distribution.manifest.v2+json",                                                                                                                                                                                                          
      "config": {                                                                                                                                                                                                                                                                   
        "mediaType": "application/vnd.docker.container.image.v1+json",                                                                                                                                                                                                              
        "size": 11726,                                                                                                                                                                                                                                                              
        "digest": "sha256:5ec0839ecb046f260ad72751d0c4b08c7a085b147a519619e5a54876643a3231"                                                                                                                                                                                         
      },                                                                                                                                                                                                                                                                            
      "layers": [                                                                                                                                                                                                                                                                   
        {                                                                                                                                                                                                                                                                           
          "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",                                                                                                                                                                                                         
          "size": 40222636,                                                                                                                                                                                                                                                         
          "digest": "sha256:d84b7435af12678c551b7489227b74c994981386b5bc4875ec512e11f28249c5"                                                                                                                                                                                       
        },
    

    而且镜像配置多了指向qemu的指针:

    $ regctl image inspect balenalib/raspberry-pi-debian-node:latest-jessie            
    {                                                                                                                              
      "created": "2019-05-02T22:50:58.241895826Z",                         
      "architecture": "amd64",                                           
      "os": "linux",                                                                         
      "config": {                                                                                                                                                                                                                                                                   
        "Env": [                                                                                                                                                                                                                                                                    
          "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",                                                                                                                                                                                                      
          "LC_ALL=C.UTF-8",                                                                                                                                                                                                                                                        
          "DEBIAN_FRONTEND=noninteractive",                                                        
          "UDEV=off",               
          "QEMU_CPU=arm1176",                                            
          "NODE_VERSION=11.14.0",                                                                                                                                                                                                                                                   
          "YARN_VERSION=1.12.3"                                                                                                                                                                                                                                                     
        ],    
    

    这不适用于没有 qemu 的 binfmt-misc 设置的主机。对于在 github 操作中构建,您可以使用 setup qemu action:

      - name: Set up QEMU
        id: qemu
        uses: docker/setup-qemu-action@v1
        with:
          image: tonistiigi/binfmt:latest
          platforms: all
    

    【讨论】:

      猜你喜欢
      • 2020-03-21
      • 2021-12-01
      • 1970-01-01
      • 2021-12-24
      • 2017-12-13
      • 2016-06-24
      • 1970-01-01
      • 1970-01-01
      • 2022-11-25
      相关资源
      最近更新 更多