在树莓皮上运行puckel/docker气流图像 为什么有些docker映像与Raspberry Pi(linux/arm/v7)等平台不兼容 此外,您能否修改Dockerfile或其他配置文件以使其兼容

在树莓皮上运行puckel/docker气流图像 为什么有些docker映像与Raspberry Pi(linux/arm/v7)等平台不兼容 此外,您能否修改Dockerfile或其他配置文件以使其兼容,docker,docker-compose,raspberry-pi,airflow,Docker,Docker Compose,Raspberry Pi,Airflow,谢谢你的建议 到目前为止,我已经遵循了,跳过了可选构建,然后尝试通过以下方式运行容器: docker run -d -p 8080:8080 puckel/docker-airflow webserver 收到以下警告: 警告:请求的映像的平台(linux/amd64)与检测到的主机平台(linux/arm/v7)不匹配,未请求任何特定平台 找到并运行: 然后,此错误: docker:已找到来自守护进程的错误响应:映像,引用puckel/docker airflow:latest,但与指定的

谢谢你的建议


到目前为止,我已经遵循了,跳过了可选构建,然后尝试通过以下方式运行容器:

docker run -d -p 8080:8080 puckel/docker-airflow webserver
收到以下警告:

警告:请求的映像的平台(linux/amd64)与检测到的主机平台(linux/arm/v7)不匹配,未请求任何特定平台

找到并运行:

然后,此错误:

docker:已找到来自守护进程的错误响应:映像,引用puckel/docker airflow:latest,但与指定的平台不匹配:想要的linux/arm/v7,实际:linux/amd64。
请参阅“docker run--帮助”


可执行文件,即二进制文件,取决于计算机的体系结构(amd64,arm…)。Docker的图像包含二进制文件。也就是说,docker映像依赖于计算机体系结构

因此,如果您查看docker的注册表,就会指定映像的操作系统和体系结构。请参阅您使用的,
linux/amd64
您可以看到它只支持。换句话说,它在arm体系结构中不起作用。 如果你想运行这个arm架构,有几种方法,但关键是一种。它是以arm而不是amd64作为docker图像来构建原始代码的结果


在这方面,关于建筑的指导方针是很明确的

首先,如果您查看github提供的
Dockerfile
,它从python:3.7-slim-buster中的图像
开始。对于相应的
python:3.7-slim-buster
,它支持
linux/arm/v5
linux/arm/v7
linux/arm/v5
linux/arm64/v8

换句话说,您可以构建到arm体系结构

我有通过docker buildx命令为多个体系结构创建映像的经验。当然,也存在其他方法,但我只简单介绍下面的命令


  • docker buildx是一种实验性功能,仍然建议在生产环境中不要使用实验性功能

可执行文件,即二进制文件,取决于计算机的体系结构(amd64,arm…)。Docker的图像包含二进制文件。也就是说,docker映像依赖于计算机体系结构

因此,如果您查看docker的注册表,就会指定映像的操作系统和体系结构。请参阅您使用的,
linux/amd64
您可以看到它只支持。换句话说,它在arm体系结构中不起作用。 如果你想运行这个arm架构,有几种方法,但关键是一种。它是以arm而不是amd64作为docker图像来构建原始代码的结果


在这方面,关于建筑的指导方针是很明确的

首先,如果您查看github提供的
Dockerfile
,它从python:3.7-slim-buster
中的图像
开始。对于相应的
python:3.7-slim-buster
,它支持
linux/arm/v5
linux/arm/v7
linux/arm/v5
linux/arm64/v8

换句话说,您可以构建到arm体系结构

我有通过docker buildx命令为多个体系结构创建映像的经验。当然,也存在其他方法,但我只简单介绍下面的命令


  • docker buildx是一种实验性功能,仍然建议在生产环境中不要使用实验性功能

谢谢你的回复。因此,可以通过docker命令行工具修改二进制文件,但无法在文件系统中找到作为目录的文件,对吗?感谢您的响应。因此,可以通过docker命令行工具修改二进制文件,但在文件系统中找不到作为目录的二进制文件,对吗?您正在运行哪个版本的docker<代码>docker--版本
。看起来版本20有一些问题,我有幸降级到版本19谢谢你的提示,我会检查这是否有效经过更多的调查,这是因为没有QEMU支持。Docker桌面默认包括这些,但我的Ubuntu/AWS机器没有。我安装了这些软件包,它开始工作。以下是我遵循的教程:我仍然有一些问题,但似乎用
QEMU
buildx
命令来模拟体系结构是解决我问题的一般方法。我还在想办法把它拼凑起来。谢谢()您正在运行哪个版本的Docker<代码>docker--版本。看起来版本20有一些问题,我有幸降级到版本19谢谢你的提示,我会检查这是否有效经过更多的调查,这是因为没有QEMU支持。Docker桌面默认包括这些,但我的Ubuntu/AWS机器没有。我安装了这些软件包,它开始工作。以下是我遵循的教程:我仍然有一些问题,但似乎用
QEMU
buildx
命令来模拟体系结构是解决我问题的一般方法。我还在想办法把它拼凑起来。谢谢()
docker run -d -p 8080:8080 --platform linux/arm/v7 puckel/docker-airflow:latest webserver
docker buildx build --platform linux/arm/v5,linux/arm/v7 .