错误:在 x86_64 上使用 docker buildx 构建 multiarch-x86_64、arm64

7

我只是使用 buildx 来制作多架构镜像
当运行 docker buildx build --platform linux/amd64,linux/arm64 -t maskertim/zookeeper-demo .

错误信息

错误信息如下:

------
 > [linux/arm64 3/5] RUN curl "https://archive.apache.org/dist/kafka/2.8.0/kafka_2.13-2.8.0.tgz"    -o /tmp/kafka/kafka.tgz &&  mkdir /kafka && cd /kafka &&    tar -xzvf /tmp/kafka/kafka.tgz --strip 1:
#8 0.915   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
#8 0.916                                  Dload  Upload   Total   Spent    Left  Speed
100 68.0M  100 68.0M    0     0   936k      0  0:01:14  0:01:14 --:--:-- 3475k
#8 75.45 tar: Child returned status 1
#8 75.45 tar: Error is not recoverable: exiting now
------
dockerfile:9
--------------------
   8 |     
   9 | >>> RUN curl "https://archive.apache.org/dist/kafka/${KAFKA_VERSION}/kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz" \
  10 | >>>  -o /tmp/kafka/kafka.tgz && \
  11 | >>>  mkdir /kafka && cd /kafka && \
  12 | >>>  tar -xzvf /tmp/kafka/kafka.tgz --strip 1
  13 |     
--------------------
error: failed to solve: process "/dev/.buildkit_qemu_emulator /bin/sh -c curl \"https://archive.apache.org/dist/kafka/${KAFKA_VERSION}/kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz\" \t-o /tmp/kafka/kafka.tgz && \tmkdir /kafka && cd /kafka && \ttar -xzvf /tmp/kafka/kafka.tgz --strip 1" did not complete successfully: exit code: 2

Dockerfile(容器构建文件)

这是我的Dockerfile(容器构建文件):

FROM openjdk:11.0.12-jre-buster

ENV KAFKA_VERSION 2.8.0
ENV SCALA_VERSION 2.13
RUN mkdir /tmp/kafka && \
    apt-get update && \
    apt-get install -y curl

RUN curl "https://archive.apache.org/dist/kafka/${KAFKA_VERSION}/kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz" \
    -o /tmp/kafka/kafka.tgz && \
    mkdir /kafka && cd /kafka && \
    tar -xzvf /tmp/kafka/kafka.tgz --strip 1

COPY start-zookeeper.sh /usr/bin
RUN chmod +x /usr/bin/start-zookeeper.sh

CMD ["start-zookeeper.sh"]

发生了什么?我不知道为什么会出现这个错误,也没有解决它的方法。

我在ARM64上构建时遇到了类似的问题,通过将解压缩步骤(在我的情况下是bzip2)与untar步骤分开来解决了这个问题。基础镜像是Alpine 3.15。我不知道为什么tar会失败。 - acj
3个回答

5

先解压:

gzip -d /tmp/kafka/kafka.tgz

然后使用以下命令解压:

tar xpf /tmp/kafka/kafka.tar

0

我认为问题与tar有关,更具体地说,是因为缺少一个依赖项导致其中一个子进程无法解压缩,而该依赖在buildx使用的qemu_emulator中似乎不存在。

最终,我使用了dockerfile中的ADD命令,而不是RUN tar,因为它已经内置了此功能。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接