docker - 无法使用 GitHub 操作构建 Docker 映像
问题描述
我目前正在尝试使用 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
我在这里搜索了多个其他线程,但我找不到任何有用的东西,我不太确定还能尝试什么。任何帮助或建议将不胜感激。
相关文件:
解决方案
您的基础映像对 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 操作:
- name: Set up QEMU
id: qemu
uses: docker/setup-qemu-action@v1
with:
image: tonistiigi/binfmt:latest
platforms: all
推荐阅读
- html - Mac上的图片和文字不在同一行
- regex - 子字符串之间的正则表达式拆分文件
- javascript - 如何让这个 Anchor 标签填充下一个 div 之前的空间?
- android - 在数据绑定中找不到属性的设置器
- angular - ionic 3 应用程序中的更改检测问题
- yii2 - afterSave() 中的 $changedAttributes 是否与 $this->getDirtyAttributes() 相同?
- python - 使用外部库或参数在 PyCharm 中运行 python 文件
- python - pandas groupby 聚合逐元素列表添加
- vba - 删除特定范围行的宏
- jquery - jQuery 使用 ajax 输入创建表 - 我希望一列能够让用户更改内容