简体   繁体   English

无法使用 GitHub 操作构建 Docker 映像

[英]Unable to Build Docker Image Using GitHub Actions

I'm currently trying to build a Docker image using GitHub Actions (CI).我目前正在尝试使用 GitHub Actions (CI) 构建 Docker 图像。 I can successfully build it on my machine and multiple other x86_64 architectures which I believe GitHub Actions also runs, but when building, I experience the following issue:我可以在我的机器和多个其他 x86_64 架构上成功构建它,我相信 GitHub Actions 也可以运行,但是在构建时,我遇到了以下问题:

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

I've searched multiple other threads here, but I wasn't able to find anything useful and I'm not quite sure what else to try.我在这里搜索了多个其他线程,但我找不到任何有用的东西,我不太确定还能尝试什么。 Any help or suggestions would be much appreciated.任何帮助或建议将不胜感激。

Relevant Files:相关文件:

This is the full build log 这是完整的构建日志

This is the Dockerfile 这是 Dockerfile

This is the CI file 这是 CI 文件

This is the full repository 这是完整的存储库

Your base image is invalid for amd64:您的基础映像对 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

That base image won't run on systems without qemu's binfmt_misc configured to run binaries for other platforms.如果没有将 qemu 的 binfmt_misc 配置为运行其他平台的二进制文件,则该基本映像将无法在系统上运行。

It's actually not a multi-platform base image at all, and instead is only designed to run on systems with qemu setup (note the media type is a manifest and not a manifest list):它实际上根本不是一个多平台基础映像,而是仅设计为在具有 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"                                                                                                                                                                                       
    },

And the image configuration has more pointers to qemu:并且镜像配置有更多指向 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"                                                                                                                                                                                                                                                     
    ],    

This won't work on hosts without qemu's binfmt-misc setup.这不适用于没有 qemu 的 binfmt-misc 设置的主机。 For building within a github action, you can use the setup qemu action :要在 github 操作中构建,您可以使用setup qemu 操作

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM