ubuntu 请求的映像的平台(linux/arm 64/v8)与检测到的主机平台(linux/amd 64)不匹配,并且未请求特定平台

hgqdbh6s  于 2022-11-02  发布在  Linux
关注(0)|答案(1)|浏览(1036)

我的服务器和Docker信息如下:

Linux xxx 3.10.0-1160.66.1.el7.x86_64 #1 xxx x86_64 x86_64 x86_64 GNU/Linux

Docker version 20.10.17

Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Docker Buildx (Docker Inc., v0.8.2-docker)
  scan: Docker Scan (Docker Inc., v0.17.0)

Server:
 Server Version: 20.10.17
 Kernel Version: 3.10.0-1160.66.1.el7.x86_64
 Operating System: CentOS Linux 7 (Core)
 OSType: linux
 Architecture: x86_64

我想用QEMU建一个码头集装箱。我按照官方的QEMU github的说明做的。但是它给了错误。

$ uname -m
x86_64

$ docker run --rm -t arm64v8/ubuntu uname -m
WARNING: The requested image's platform (linux/arm64/v8) does not match the detected host platform (linux/amd64) and no specific platform was requested
exec /usr/bin/uname: exec format error

然后我在stackoverflow上发现了一个类似的docker problem。我尝试了docker builddocker buildx,但仍然不起作用。

$ docker build --platform linux/arm64/v8 .
unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /work/home/chenning/Dockerfile: no such file or directory

$ docker buildx build --push --platform linux/amd64,linux/arm64 -t <tag> .
-bash: tag: No such file or directory

我也尝试了下面的指令,但它仍然报告错误。

$ docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
sh: write error: Invalid argument
Setting /usr/bin/qemu-alpha-static as binfmt interpreter for alpha
Setting /usr/bin/qemu-arm-static as binfmt interpreter for arm
sh: write error: Invalid argument
Setting /usr/bin/qemu-armeb-static as binfmt interpreter for armeb
sh: write error: Invalid argument
Setting /usr/bin/qemu-sparc-static as binfmt interpreter for sparc
sh: write error: Invalid argument
...

我按照指南从这个link
当我尝试的时候,它就起作用了

docker run --rm --privileged multiarch/qemu-user-static:register

我在/proc/sys/fs/binfmt_misc中有qemu解释器(包括qemu-aarch64
我的qemu-aarch64是这样的

enabled
interpreter /usr/bin/qemu-aarch64-static
flags:
offset 0
magic 7f454c460201010000000000000000000200b700
mask ffffffffffffff00fffffffffffffffffeffffff

但是我没有修改flags的权限,我也没有interpreter /usr/bin/qemu-aarch64-static
我能得到一些帮助,请?

icomxhvb

icomxhvb1#

我得到了同样的错误,但执行以下命令修复了问题:

$ docker run --rm --privileged multiarch/qemu-user-static --reset -p yes

所以我甚至可以生成一个shell:

$ docker run -it arm64v8/ubuntu /bin/bash
root@0b6162g03ka5:/# uname -m
aarch64

如果不起作用,请查看此issue,否则应在github上创建一个新问题

相关问题