【问题标题】:Rancher desktop, docker file shell commands are not working on mac m1 chipRancher 桌面,docker 文件 shell 命令在 mac m1 芯片上不起作用
【发布时间】:2022-10-24 00:57:30
【问题描述】:

嗨,以下是我的 docker 文件命令

ARG debianVersion=10.2
FROM debian:${debianVersion}
ARG user=jenkins
ARG group=jenkins
ARG uid=1000
ARG gid=1000
ARG AGENT_WORKDIR=/home/${user}/agent
USER root
RUN apt-get update
RUN groupadd -g ${gid} ${group}
RUN useradd -c "Jenkins user" -d /home/${user} -u ${uid} -g ${gid} -m ${user}

我在mac m1芯片上使用rancher桌面。

在执行以下命令时出现错误

docker build -t test --platform linux/x86_64 .

错误信息如下

[Warning] The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
---> Running in 7778b2303192
-c: 0: Can't open apt-get update
The command '/bin/sh -c apt-get update' returned a non-zero code: 127

发现没有任何 shell 命令正常工作,出现非零代码错误:127 如何解决这个问题?

使用牧场主版本1.5.0使用容器运行时码头工人(白鲸)使用 Kubernetes 版本v1.21.14

【问题讨论】:

  • 什么是基本图像(图像的FROM 行)?你确定你有它的正式副本吗?像docker pull ubuntu:20.04 这样从 Docker Hub 重新下载它有什么不同吗?
  • 嗨使用 FROM debian:${debianVersion} 更新的问题

标签: docker dockerfile sh rancher rancher-desktop


【解决方案1】:

降级到 Rancher Desktop 1.4.1。

这可行,但如果降级不是一个选项,Rancher Desktop Issues 网站上有针对similar problems 的解决方法,如下所示: qemu workaround

作为临时解决方法,在 VM 中以 root 身份:

Create /etc/conf.d/qemu-binfmt, with contents binfmt_flags="POCF"
Run rc-update --update
Run rc-service qemu-binfmt restart

连接到 VM 并运行这些命令的简单方法是 (source):

docker run -it --rm --privileged --pid=host justincormack/nsenter1

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
【解决方案2】:

Dockerfile:

…
FROM --platform=linux/arm64 debian:${debianVersion}
…

构建命令:

docker build -t test --platform linux/arm64 .

【讨论】:

    【解决方案3】:

    据我了解dockerd 运行时只能使用Docker Desktopm1 chip macs 上模拟其他平台类型(在上述情况下为--platform=linux/amd64)。

    尝试使用与Rancher Desktop 一起打包的内置nerdctl

    nerdctl build -t test --platform linux/amd64 .
    nerdctl build -t test --platform linux/x86_64 .
    

    注:我发现即使使用仿真,一些--platform linux/x86_64 (linux/amd64) 图像仍然无法构建,最近使用官方selenium 设置了,但wso2mailcatcher 图像没有问题

    【讨论】:

    • 试过这个不起作用得到同样的错误
    • 不幸的是,它可能只是容器,有些不能用于仿真。作为测试,看看你在模拟下如何公平:docker run --platform linux/x86_64 centos:8 & docker run --platform linux/x86_64 ruby:alpine
    • 我刚刚使用 Docker Desktop 构建了您的映像并让容器运行。我在蒙特雷 12.2.1。想知道 Rancher Desktop 是否是问题所在? docker build 和 run 命令都使用了 --platform linux/x86_64。
    猜你喜欢
    • 2021-10-19
    • 2022-11-29
    • 1970-01-01
    • 2022-09-24
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    • 2022-08-20
    • 2022-01-10
    相关资源
    最近更新 更多