首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头建造商armv6

码头建造商armv6
EN

Stack Overflow用户
提问于 2021-02-09 09:53:12
回答 1查看 749关注 0票数 0

我需要的是:

x86_64机器上的一个用于raspberry pi零的测试容器,它与armv6l的qemu仿真一起工作。

到目前为止,我得到的是:

带有测试代码的Dockerfile

代码语言:javascript
复制
FROM python:3.7.9

COPY hello.py ./

CMD [ "python3", "./hello.py" ]

映像是使用以下命令构建的:

docker buildx build --platform linux/arm/v6 -t test/hello --push .

在上传并为linux/arm/v6构建之后,我尝试使用以下命令运行它:

代码语言:javascript
复制
docker run --platform=linux/arm/v6 --rm -t test/hello uname -mpi 
Output: armv7l unknown unknown

我已经设置了qemu和binfmt,就像他们在github页面上说的那样:https://github.com/docker/buildx#building-multi-platform-images

我不明白为什么输出是armv7l,因为我做了一切工作来生成armv6l映像。我不知道我是否需要调整码头或qemu本身。我对码头的建造系统和如何模仿qemu下的集装箱非常陌生,所以如果有人能帮我解决这个问题,我将非常感激。

编辑:

多亏了Peter,容器才知道被迫使用armv6l。

代码语言:javascript
复制
docker run -e QEMU_CPU=arm1176 --platform=linux/arm/v6 --rm -t test/hello uname -mpi
Output: armv6l unknown unknown
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-09 11:35:43

uname告诉您'armv7l‘,因为您没有向QEMU指定它应该模仿任何特定的CPU类型,它的缺省值是“我们可以模仿的所有特性”。

这不应该是个问题,因为可以在v6 CPU上运行的所有软件都将在v7 CPU上运行。(这就是QEMU默认设置的原因:这意味着,一般来说,来宾程序都会正常工作。)

我不熟悉docker,但我怀疑它的“platform”参数只是简单地配置容器中的代码是用来运行的。因此,您有一个装满v6二进制文件的容器,它将在v6 CPU或v7二进制程序上运行。

如果确实需要强制QEMU模拟v6 CPU,而不是v7 CPU,则可以将环境变量QEMU_CPU设置为'arm1176',这将使QEMU模拟特定的CPU。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66116587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档