You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Playwright的Docker镜像在M1 Mac正常,Ubuntu服务器运行报错

解决Docker镜像跨架构运行的"exec /bin/sh: exec format error"问题

问题根源

你使用的mcr.microsoft.com/playwright:v1.18.1-arm64是arm64架构专属镜像,M1 Mac本身是arm64架构,运行自然没问题;但你的Ubuntu服务器大概率是x86_64(amd64)架构,两种架构指令集不兼容,直接运行arm64镜像就会触发执行格式错误。

解决方案

1. 构建跨架构兼容的x86_64镜像

在M1 Mac上利用Docker Buildx工具,指定目标架构为x86_64构建镜像:

docker buildx build --platform linux/amd64 -t your-custom-playwright-image:v1.18.1 .

构建完成后,将这个镜像推送到镜像仓库或直接拷贝到Ubuntu服务器,就能正常运行。

2. 替换为x86_64版本的Playwright基础镜像

修改Dockerfile的基础镜像为对应版本的x86_64版本,Playwright的x86_64镜像通常带有发行版后缀(比如-focal对应Ubuntu 20.04):

FROM mcr.microsoft.com/playwright:v1.18.1-focal
RUN apt-get -y update && apt-get -y upgrade
ADD build/libs/program.jar /tmp
WORKDIR /tmp
RUN apt-get -y install openjdk-11-jre-headless && apt-get clean
CMD java -jar program.jar

直接用这个Dockerfile构建的镜像,就能在x86_64的Ubuntu服务器上正常执行所有RUN命令。

3. 服务器端启用QEMU架构模拟(临时测试用)

如果不想重新构建镜像,可以在Ubuntu服务器上安装QEMU来模拟arm64指令集,但这种方式会有性能损耗,仅适合临时测试:

sudo apt-get update && sudo apt-get install -y qemu-user-static
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes

执行完上述命令后,再运行你的arm64镜像即可临时解决问题,但不推荐生产环境使用。

内容的提问来源于stack exchange,提问作者ShpilevojArsenij

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 11:54:22