感谢您的任何建议!
到目前为止,我已经 installed docker and docker-compose 然后遵循 puckel/docker-airflow readme,跳过可选构建,然后尝试通过以下方式运行容器:
docker run -d -p 8080:8080 puckel/docker-airflow webserver
收到此警告:
<块引用>警告:请求的映像平台 (linux/amd64) 与检测到的主机平台 (linux/arm/v7) 不匹配,并且未请求特定平台
找到this issue并运行:
docker run -d -p 8080:8080 --platform linux/arm/v7 puckel/docker-airflow:latest webserver
然后,这个错误:
<块引用>docker: 来自守护进程的错误响应:找到具有参考 puckel/docker-airflow:latest 的图像但与指定平台不匹配:想要 linux/arm/v7,实际:linux/amd64。
请参阅“docker run --help”。
答案 0 :(得分:3)
可执行文件,即二进制文件,取决于计算机的架构(amd64、arm...)。 Docker 的镜像包含二进制文件。也就是说,docker 镜像依赖于计算机架构。
因此,如果您查看 docker 的注册表,则指定了映像的操作系统和架构。参考你用的dockerhub/puckel/docker-airflow,linux/amd64
你可以看到它只支持。换句话说,它不适用于 arm 架构。
如果你想运行这个 arm 架构,会有几种方法,但重点是一种。是用arm而不是amd64来构建源代码的结果作为docker镜像。
在 github.com/puckel/docker-airflow 中,详细说明了构建指南。
首先看github提供的Dockerfile
,是从图片FROM python:3.7-slim-buster
开始的。对于对应的python:3.7-slim-buster
,支持linux/arm/v5
、linux/arm/v7
、linux/arm/v5
、linux/arm64/v8
。 dockerhub/python/3.7-slim-buster
换句话说,你可以构建到 arm 架构
我有通过 docker buildx 命令为多个架构创建镜像的经验。当然还有其他方法,下面我只简单介绍一下命令。
Experimental features must not be used in production environments
。docker buildx build --platform linux/arm/v5,linux/arm/v7 .