【问题标题】:Docker - error when extracting in Centos (invalid tar header)Docker - 在 Centos 中提取时出错(无效的 tar 标头)
【发布时间】:2018-10-18 09:54:08
【问题描述】:
Docker version 18.06.1-ce, build e68fc7a
CentOS Linux release 7.5.1804 (Core)

我的 docker 文件是

FROM node:8

当我执行 - docker build -t my-image . 时出现以下错误

Sending build context to Docker daemon  44.03kB
Step 1/1 : FROM node:8
8: Pulling from library/node
f189db1b88b3: Extracting [==================================================>]  54.25MB/54.25MB
3d06cf2f1b5e: Download complete
687ebdda822c: Download complete
99119ca3f34e: Download complete
e771d6006054: Download complete
b0cc28d0be2c: Download complete
7225c154ac40: Download complete
7659da3c5093: Download complete
failed to register layer: ApplyLayer exit status 1 stdout:  stderr: archive/tar: invalid tar header

有什么线索吗?有什么建议可以解决吗?

我在运行docker run -it ubuntu时遇到同样的错误

【问题讨论】:

  • 尝试先拉取镜像 docker pull node:8 然后构建你的镜像
  • 我在解压时遇到同样的错误
  • 您使用的是装有旧操作系统和 Docker 的 Mac 吗?
  • 您可能已经用尽了 inode。确保您使用的是overlay2 存储驱动程序而不是overlay。我会先查看官方文档,看看你的 Linux 内核是否支持overlay2,然后按照说明更改存储驱动程序。
  • @prithajnath df -i 显示只有 1% 的 inode 处于忙碌状态。 Docker info 显示我正在使用 devicemapper 存储驱动程序。而且我无法切换到 overlay/overlay2,因为我的 linux 内核不支持 d_type (linuxer.pro/2017/03/…)。而且我无法重新格式化整个文件系统。但是我不确定 devicemapper 是原始问题的根本原因。我会尝试配置direct-lvm模式并在此更新

标签: linux docker centos dockerfile


【解决方案1】:

错误消息表明您尝试下载的图像已损坏。有几个地方我能想到会发生这种情况的地方:

  • 在远程注册服务器上
  • 在途
  • 在内存中
  • 在磁盘上
  • 由应用程序

鉴于图像的受欢迎程度,我会排除注册服务器存在问题。您的服务器可能不稳定,下载大图像时会触发内存或磁盘问题。在 Linux 上,您可能会在 dmesg 中看到内核错误。

docker 的版本足够新,任何过去的问题早已得到修复。与非常大的层(超过 8GB)相关的 tar 文件处理只有一个问题,这不适用于您要提取的图像。 tar 处理直接嵌入到 docker 中,因此更改或升级 tar 二进制文件不会影响 docker。

您的存储驱动程序和后端存储设备可能存在问题。如果 docker 还没有默认设置,则从 devicemapper 更改为 overlay2 将是一个很好的第一步(您可以在 docker info 中查看您当前的存储驱动程序并使用 /etc/docker/ 中的条目进行更改daemon.json)。

我对该列表的第一个猜测是“运输中”部分。由于请求将通过 https,因此这不会来自错误的数据包。但是网络上拦截所有网络流量的代理可能是罪魁祸首。如果您有代理,请确保将 docker 配置为登录并使用您的代理。有关详细信息,请参阅https://docs.docker.com/config/daemon/systemd/#httphttps-proxy

【讨论】:

    【解决方案2】:

    尝试用tar tvf yourarchive解压你的图片

    如果没有错误,请尝试更新 docker(如果可能) 如果出现错误,请尝试重建您的存档。

    there描述的类似问题

    【讨论】:

      【解决方案3】:

      当您在tar 提取时遇到相同错误时,获取的图像可能确实已损坏。

      问题15561 上的cmets 提示,本地构建仍然有效。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多