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

arm64平台使用Docker buildx构建DockURSim镜像报文件不存在错误

报错原因
  • 核心直接原因:Dockerfile中每个RUN指令都是独立的shell进程,执行完毕后会重置工作目录。你第38行的RUN cd /tmp/仅对当前行生效,第39行执行tar解压时,工作目录回到了镜像默认目录,压缩包被解压到了默认目录而非/tmp下,因此/tmp路径下不存在匹配ursim*的文件,导致mv命令执行失败。
  • 其他潜在后续问题:
    1. JAVA_HOME路径写死为amd64架构路径/usr/lib/jvm/java-8-openjdk-amd64,arm64架构下该路径不存在,会导致后续java调用失败。
    2. 你下载的官方URSim安装包本身仅提供x86_64版本,无原生arm64支持,即使解压成功后续运行也会遇到架构兼容问题。
    3. 构建命令中的架构参数有误,linux/arm/v8是32位armv8架构,你需要的Apple M1适配的arm64架构标识为linux/arm64/v8。
解决方案

第一步:修正Dockerfile路径问题

将分散的路径操作合并到同一个RUN指令中,避免cd命令失效,修改38~64行内容如下:

# 解压tarball并处理目录
RUN cd /tmp && \
    tar xvzf URSim-Linux.tar.gz && \
    rm /tmp/URSim-Linux.tar.gz && \
    mv /tmp/ursim* /tmp/ursim && \
    # 进入目录执行安装操作
    cd /tmp/ursim && \
    chmod +x ./*.sh ./URControl && \
    sed -i 's|apt-get -y install|apt-get -qy install --no-install-recommends|g' ./install.sh && \
    sed -i 's|tty -s|(exit 0)|g' install.sh && \
    sed -i 's|needToInstallJava$|(exit 0)|g' install.sh && \
    sed -i '/for TYPE in UR3 UR5 UR10/,$ d' ./install.sh && \
    sed -i 's|pkexec ||g' ./install.sh && \
    sed -i 's|sudo ||g' ./install.sh && \
    sed -i 's|sudo ||g' ./ursim-certificate-check.sh && \
    ./install.sh

第二步:适配JAVA_HOME路径

将第32行写死的JAVA_HOME修改为动态适配架构的配置:

ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-$(dpkg --print-architecture)

第三步:修正构建命令

删除错误的32位架构参数,调整为:

docker buildx build --platform linux/amd64,linux/arm64/v8 -t my-user/my-repository:latest --push .

可选替代方案(适合仅M1本地使用场景)

如果不需要对外发布arm64版本,仅个人M1设备使用,可直接开启Docker Desktop的Rosetta转译功能:

  1. 打开Docker Desktop设置 -> 开发功能 -> 勾选「使用Rosetta模拟x86/64」
  2. 重启Docker后直接拉取已有的amd64版本arranhs/dockursim镜像即可正常运行,无需自行构建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:06:03