Error: Failed to solve with frontend dockerfile.v0: failed to create LLB definition: no match for platform in manifest when building docker image

Error: Failed to solve with frontend dockerfile.v0: failed to create LLB definition: no match for platform in manifest when building docker image

我收到错误:

failed to solve with frontend dockerfile.v0: failed to create LLB definition: no match for platform in manifest

构建以下 Dockerfile 时:

FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8
COPY . /inetpub/wwwroot

原因很简单,我的 docker 桌面 运行 在 linux 容器上,图像是从 windows 图像构建的。

只需切换到 windows 个容器即可解决问题。

留言内容无厘头,希望能为大家节省一些时间。

在我的例子中,我使用 mac 和 m1 处理器来 运行 python 图像,我的 docker-composeDockerfile 看起来像这样:

docker-compose.yml

version: '3.7'

services:
  words_bot:
    build: .
    restart: unless-stopped

Dockerfile:

FROM python:3-onbuild
COPY . /usr/src/app
CMD ["python", "-m", "bot"]

似乎图像需要 x86 主机架构,所以我得到了 OP 所指的错误。

在我将 platform: linux/amd64 添加到 docker-compose.yml 之后,一切都按预期开始工作:

version: '3.7'

services:
  cng_words_bot:
    build: .
    platform: linux/amd64
    restart: unless-stopped

Docker 与某些架构(例如 M1)混淆。确保指定架构(平台)

  services:
      service-name:
        platform: linux/x86_64. # specify the architecture here
        image: some-image

在 docker 文件中为我修复了 M1 上的平台

例如FROM --platform=linux/amd64 amazonlinux:2018.03

在带有 Intel 芯片的 macOS 上构建一个“标准”docker 图像我运行 进入这个。

重新启动 Docker 守护程序为我修复了它。