Docker 什么是「;清单blob未知:blob对注册表未知;错误
我试图将多拱门docker映像推送到docker hub并遇到错误(打开docker问题,网址为): 四处搜索显示错误可能与“外来层”(foreignlayers)有关,但不清楚这是如何基于阿尔卑斯山构建图像的 由于docker github罚单和一个论坛问题没有得到任何回应,我还能做些什么来进行进一步分析?例如,我如何找出它抱怨的是哪一层?您应该尝试CLI的功能 假设Docker 什么是「;清单blob未知:blob对注册表未知;错误,docker,docker-registry,Docker,Docker Registry,我试图将多拱门docker映像推送到docker hub并遇到错误(打开docker问题,网址为): 四处搜索显示错误可能与“外来层”(foreignlayers)有关,但不清楚这是如何基于阿尔卑斯山构建图像的 由于docker github罚单和一个论坛问题没有得到任何回应,我还能做些什么来进行进一步分析?例如,我如何找出它抱怨的是哪一层?您应该尝试CLI的功能 假设Dockerfile如下所示: FROM alpine ARG TARGETPLATFORM ARG TARGETOS ARG
Dockerfile
如下所示:
FROM alpine
ARG TARGETPLATFORM
ARG TARGETOS
ARG TARGETARCH
ARG TARGETVARIANT
ARG BUILDPLATFORM
ARG BUILDOS
ARG BUILDARCH
ARG BUILDVARIANT
RUN echo "Image target platform details :: "
RUN echo "TARGETPLATFORM : $TARGETPLATFORM"
RUN echo "TARGETOS : $TARGETOS"
RUN echo "TARGETARCH : $TARGETARCH"
RUN echo "TARGETVARIANT : $TARGETVARIANT"
RUN echo "Image build platform details :: "
RUN echo "BUILDPLATFORM : $BUILDPLATFORM"
RUN echo "BUILDOS : $BUILDOS"
RUN echo "BUILDARCH : $BUILDARCH"
RUN echo "BUILDVARIANT : $BUILDVARIANT"
docker构建命令-
docker manifest inspect docker.io/sujaypillai/multiarc:latest | jq .manifests[].platform
{
"architecture": "amd64",
"os": "linux"
}
{
"architecture": "arm64",
"os": "linux"
}
{
"architecture": "arm",
"os": "linux",
"variant": "v7"
}
docker buildx构建--平台linux/amd64、linux/arm64、linux/arm/v7-t sujaypillai/multiarc:最新--推送。
docker manifest
命令的结果-
docker manifest inspect docker.io/sujaypillai/multiarc:latest | jq .manifests[].platform
{
"architecture": "amd64",
"os": "linux"
}
{
"architecture": "arm64",
"os": "linux"
}
{
"architecture": "arm",
"os": "linux",
"variant": "v7"
}
由于我怀疑可能已推送到docker hub的清单有问题,因此我开始使用干净的本地注册表重试该过程。按照这些步骤,我看到了相同的错误消息 在这个阶段,我开始了另一轮的谷歌搜索,它不仅建议使用
--purge
在本地清理清单(这对这个问题没有帮助),而且还建议通过删除~/.docker/manifests
来删除本地清单缓存
删除清单文件夹后,注册表推送-本地和docker hub-都开始工作。推送清单时出错,而不是推送图像。@andig您能看看这一点吗?这将有助于您深入了解problem@MehantKammakomati基本映像来自同一注册表。“外来”层应该从哪里来?从注册表中删除清单可能会有所帮助,但cli似乎不提供此功能。问题不在于生成映像或注释清单。问题在于将映像推送到注册表,而实际的错误消息是由注册表创建的。尽管如此,他还是以树立buildx为榜样而获得了赏金。
docker manifest inspect docker.io/sujaypillai/multiarc:latest | jq .manifests[].platform
{
"architecture": "amd64",
"os": "linux"
}
{
"architecture": "arm64",
"os": "linux"
}
{
"architecture": "arm",
"os": "linux",
"variant": "v7"
}