Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 什么是「;清单blob未知:blob对注册表未知;错误_Docker_Docker Registry - Fatal编程技术网

Docker 什么是「;清单blob未知:blob对注册表未知;错误

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

我试图将多拱门docker映像推送到docker hub并遇到错误(打开docker问题,网址为):

四处搜索显示错误可能与“外来层”(foreignlayers)有关,但不清楚这是如何基于阿尔卑斯山构建图像的

由于docker github罚单和一个论坛问题没有得到任何回应,我还能做些什么来进行进一步分析?例如,我如何找出它抱怨的是哪一层?

您应该尝试CLI的功能

假设
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:最新--推送。

  • 平台标志通知buildx为AMD64位、ARM64位和Armv7架构生成Linux映像
  • --push标志生成一个多拱门清单,并将所有图像推送到Docker Hub
  • 以下是
    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"
    }