我遇到了以下错误:
使用前端 dockerfile.v0 无法解决:无法创建 LLB 定义:清单中没有匹配的平台
在构建以下 Dockerfile 时出现:
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8
COPY . /inetpub/wwwroot
我遇到了以下错误:
使用前端 dockerfile.v0 无法解决:无法创建 LLB 定义:清单中没有匹配的平台
在构建以下 Dockerfile 时出现:
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8
COPY . /inetpub/wwwroot
问题很简单。我在Linux容器上运行Docker桌面,并且该镜像是从Windows镜像构建的。
将容器切换到Windows可以解决这个问题。
错误信息并没有提供线索,所以我希望这能为其他人节省一些时间。
C:\Program Files\Docker\Docker\DockerCLI.exe -SwitchDaemon
命令,就像 这里所描述的那样。 - w5m在我的情况下,我使用了一台搭载M1芯片的Mac电脑运行Python镜像。我的docker-compose和Dockerfile如下:
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提到的错误。
在docker-compose.yml中添加platform: linux/amd64后,一切都按预期开始工作了:
version: '3.7'
services:
cng_words_bot:
build: .
platform: linux/amd64
restart: unless-stopped
Docker对于一些架构(例如M1)会感到困惑。请确保指定架构(platform)。
services:
service-name:
platform: linux/x86_64. # Specify the architecture here
image: some-image
更新:
如果你使用的是苹果芯片机器(arm架构),为了获得更好的虚拟化效果,需要在Docker Desktop上激活以下功能:
使用虚拟化框架
在Apple Silicon上使用Rosetta进行x86/amd64仿真
这将使用Rosetta 2
仿真器替代qemu
,两者之间的差别非常显著。
对我来说,Docker镜像本身没有构建成功。因此,我必须将--platform linux/x86_64
作为docker build
命令的参数添加。
当我在一个非常简单的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
,然后再重复该构建命令时,构建就可以正常运行了。在我看来,这似乎是Docker for Windows中的一个小问题。在这里切换到Windows容器似乎不是一个合理的选择,因为基础容器对于基于Linux的上下文来说相当有效。我尝试进行切换,但这只会引起另一个Docker for Windows的错误。/
,就像下面这样: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 gives error: no basic auth credentials #207
希望这能帮助到某些人,我花了很多时间才解决它。
FROM --platform=linux/amd64 maven:3.6-jdk-8-slim
。 - JoseloFROM --platform=linux/arm64/v8 ...
。 - samkassfailed to create LLB definition: no match for platform in manifest sha256:37bfa5a2240dcd178564aa9ee041ae2c88dde18c662c2c7ddc965e26724a81bb: not found
使用一个只有一行的docker文件:FROM mcr.microsoft.com/windows/server:ltsc2022
。我将其转换为FROM --platform=windows/amd64 mcr.microsoft.com/windows/server:ltsc2022
,然后我就能够构建(至少开始下载)了。 - El Bachir