如何让docker-compose在M1芯片上工作?

xeL*_*eLL 12 docker docker-compose apple-m1

我是 m1 macbook 的新手,在运行 docker-compose 时遇到问题,如下所示:

version: "3.7"

services:
  search:
    platform: linux/x86_64
    build:
      context: .
      dockerfile: Dockerfile.kubectl
  
Run Code Online (Sandbox Code Playgroud)

还有 Dockerfile:

FROM ubuntu:latest

RUN apt-get update && apt-get install -y apt-transport-https curl gnupg2 unzip
RUN curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
RUN echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | tee -a /etc/apt/sources.list.d/kubernetes.list
RUN apt-get update && apt-get install -y kubectl

RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" && unzip awscliv2.zip && rm awscliv2.zip
RUN ./aws/install
Run Code Online (Sandbox Code Playgroud)

运行后我得到这样的错误:

2021-09-30T13:24:52.816038712Z /lib64/ld-linux-x86-64.so.2: No such file or directory
Run Code Online (Sandbox Code Playgroud)

解决这个问题的具体步骤是什么?我的 Docker 版本是 4.1.1

小智 25

对于我来说,我添加了platform: linux/amd64.

例子:

version: "3.7"

services:
  search:
    platform: linux/amd64
    build:
      context: .
      dockerfile: Dockerfile.kubectl
Run Code Online (Sandbox Code Playgroud)


yum*_*yum 2

我相信您正在运行的映像适用于 x86_64 平台,因此它会尝试查找 x86-64.so,但您在 ARM 机器上,因此它不起作用。您可以安装 arm64 的映像或尝试运行如下命令:

docker run --platform linux/x86_64 <image>
Run Code Online (Sandbox Code Playgroud)