我收到错误:
无法使用前端 dockerfile.v0 解决:无法创建 LLB 定义:清单中的平台不匹配
构建以下 Dockerfile 时:
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8
COPY . /inetpub/wwwroot
原因很简单。我的 Docker 桌面在 Linux 容器上运行,并且该映像是从 Windows 映像构建的。
只需切换到 Windows 容器即可解决问题。
该消息毫无头绪,所以我希望这可以为其他人节省一些时间。
就我而言,我使用带有 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 所指的错误。
在我将 platform: linux/amd64 添加到 docker-compose.yml 后,一切都开始按预期工作:
version: '3.7'
services:
cng_words_bot:
build: .
platform: linux/amd64
restart: unless-stopped
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
模拟器,
差异非常显着。
对我来说,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
,然后重复该构建命令时,构建运行得很好。
恕我直言,这看起来像是 Windows 版 Docker 中的一个小问题。切换到 Windows 容器似乎不是一个合理的选择,因为基础容器对于基于 Linux 的上下文非常有效。无论如何,我尝试切换,但这只会带来 Docker for Windows 的不同错误。
在带有 Intel 芯片的 macOS 上,构建“标准”Docker 映像时,我遇到了这个问题。
重新启动 Docker 守护进程为我解决了这个问题。
就我而言。我使用的是 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
我希望它对某人有帮助,我花了很多时间才得到它。
搜索适用于您的硬件架构的Docker镜像标签可以修复它。例如,如果您使用Apple Silicon(M1或M2),则架构为arm64。
就我而言,我只是断开了 wifi 的连接,因此在花费数小时尝试调试问题之前,请仔细检查您是否在线!
第一个工程师说:首先重启😂,我遇到过几次这个问题,只是重启解决了它,所以检查你的互联网连接并重启docker,我不知道为什么,但win 10和11有时会破坏docker功能,所以重启你的系统可能会有所帮助