x86_64平台下使用QEMU构建ARM64 Docker容器遇问题求助
服务器及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
问题描述
我需要在x86_64架构主机上,通过QEMU构建并运行arm64架构的Docker容器,按QEMU官方指引操作后出现执行格式错误。
已尝试的操作及错误信息
- 直接运行arm64容器失败:
$ 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 - 尝试
docker build指定平台失败:$ 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构建多平台镜像失败:$ docker buildx build --push --platform linux/amd64,linux/arm64 -t <tag> . -bash: tag: No such file or directory - 运行multiarch/qemu-user-static初始化命令报错:
$ 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 ... - 执行register命令成功,但存在后续问题:
运行docker run --rm --privileged multiarch/qemu-user-static:register后,/proc/sys/fs/binfmt_misc目录下已生成qemu-aarch64等QEMU解释器条目,其信息如下:
但当前遇到两个问题:enabled interpreter /usr/bin/qemu-aarch64-static flags: offset 0 magic 7f454c460201010000000000000000000200b700 mask ffffffffffffff00fffffffffffffffffeffffff- 找不到
/usr/bin/qemu-aarch64-static解释器文件 - 没有权限修改该条目的
flags参数
- 找不到
求助需求
恳请提供解决方案,解决在x86_64主机上运行arm64 Docker容器的问题,以及当前找不到QEMU解释器、无法修改flags的问题。
内容的提问来源于stack exchange,提问作者kinder chen
相关产品推荐
相关产品推荐

