构建 Docker 映像时出现错误:“无法使用前端 dockerfile.v0 解决:无法创建 LLB 定义:清单中的平台不匹配”

问题描述 投票:0回答:12

我收到错误:

无法使用前端 dockerfile.v0 解决:无法创建 LLB 定义:清单中的平台不匹配

构建以下 Dockerfile 时:

FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8
COPY . /inetpub/wwwroot
docker windows-10 docker-image docker-desktop docker-build
12个回答
83
投票

原因很简单。我的 Docker 桌面在 Linux 容器上运行,并且该映像是从 Windows 映像构建的。

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

该消息毫无头绪,所以我希望这可以为其他人节省一些时间。


79
投票

M1 上的 Docker 文件中提供平台为我解决了这个问题。

例如,

FROM --platform=linux/amd64 amazonlinux:2018.03


47
投票

就我而言,我使用带有 M1 处理器的 Mac 来运行 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

9
投票

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

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

更新:

如果您使用的是Apple Silicon Chip机器(arm架构),您应该 在 Docker 桌面上激活以下功能以实现更好的虚拟化:

  • Use Virtualization framework
  • Use Rosetta for x86/amd64 emulation on Apple Silicon

它将使用

Rosetta 2
模拟器而不是
qemu
模拟器, 差异非常显着。


4
投票

(假设您在 Windows 平台上运行 Docker)要解决此问题,请右键单击托盘中的 Docker 图标(启动 Docker 引擎后,我们在系统时钟附近看到该图标)将容器从 Linux 切换到 Windows,然后选择选项 “切换到 Windows 容器...”

步骤1

第2步


3
投票

对我来说,Docker 镜像本身并没有构建。所以我必须添加

--platform linux/x86_64
作为
docker build
命令的参数。


2
投票

当我在一个非常简单的 Dockerfile 上使用 Docker 构建时,我自己偶然发现了一个类似的问题:

FROM node:lts-alpine

COPY ./ /app/
RUN cd /app && npm ci && npm run build

运行

docker build -t foo .
时,出现了OP错误,原因略有不同。

但是,当首先运行

docker pull node:lts-alpine
,然后重复该构建命令时,构建运行得很好。

恕我直言,这看起来像是 Windows 版 Docker 中的一个小问题。切换到 Windows 容器似乎不是一个合理的选择,因为基础容器对于基于 Linux 的上下文非常有效。无论如何,我尝试切换,但这只会带来 Docker for Windows 的不同错误。


0
投票

在带有 Intel 芯片的 macOS 上,构建“标准”Docker 映像时,我遇到了这个问题。

重新启动 Docker 守护进程为我解决了这个问题。


0
投票

就我而言。我使用的是 Mac M1,它缺少

/
,如下所示:

怎么样:

version: '3.6'
services:
  service-name:
    build:
      # It was without the /, like:
      context: .

已修复:

version: '3.6'
services:
  service-name:
    build:
      # The correct one
      context: ./

错误是:

failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to create LLB definition: unexpected status code [manifests latest]: 401 Unauthorized

我还需要更改 credsStore 值。更多信息:docker pull 给出错误:没有基本身份验证凭据#207

我希望它对某人有帮助,我花了很多时间才得到它。


0
投票

搜索适用于您的硬件架构Docker镜像标签可以修复它。例如,如果您使用Apple SiliconM1M2),则架构为arm64。


0
投票

就我而言,我只是断开了 wifi 的连接,因此在花费数小时尝试调试问题之前,请仔细检查您是否在线!


0
投票

第一个工程师说:首先重启😂,我遇到过几次这个问题,只是重启解决了它,所以检查你的互联网连接并重启docker,我不知道为什么,但win 10和11有时会破坏docker功能,所以重启你的系统可能会有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.