Docker pull “意外的 EOF”

Nat*_*hol 12 artifactory docker

我遇到了 docker 的问题。场景是这样的:我们使用Codebuild+Packer+docker创建AMI,用于deploy。在这一步中,我们从工件中提取图像,并且除了提取 > 1Gb 的层之一外,一切都很好。多次重试后失败并显示错误:下载失败,重试:未知 blob,然后是“意外的 EOF”。你遇到过这样的问题吗?任何意见或建议都非常感谢。

小智 9

使用 Windows 上的 Docker Desktop,找不到该dockerd命令,然后在文件中添加以下条目daemon.json并重新启动 docker 服务。

"max-concurrent-downloads": 1
Run Code Online (Sandbox Code Playgroud)

您将在 path- 中找到该文件C:\Users\<user-name>\.docker\daemon.json

这将以顺序方式拉取各层,因此需要时间,但是,是的,这是通过弱网络连接下载大图像文件的替代解决方案。


ret*_*cus 8

我遇到了这个问题,因为注册表 V2 中的一个非常小的层由于某种未知原因而损坏或损坏。docker pull重试该层后失败,并出现“意外的 EOF”(在本例中标识为“1f8fd317c5a4”)。

从源重建图像并试图docker push说“层已经存在”,而不是解决问题。

我可以curl像这样删除有问题的图层;

curl -H 'Accept: application/vnd.docker.distribution.manifest.v2+json' -sk "https://registry.local/v2/image-name/manifests/1033-develop-7e414712"

(将“registry.local”替换为您的注册表,将“image-name”替换为您的映像名称,并将“1033-develop-7e414712”替换为您的映像标签或“最新”。)

从 JSON 输出中获取第 1f8fd317c5a4 层的完整 sha256 摘要,并在下一个命令中使用它:

curl -k -X DELETE "https://registry.local/v2/image-name/blobs/sha256:1f8fd317c5a406a75130dacddc02bd09a9abf44e068e2730dd8f5238666bb390"

现在您将能够docker push registry.local/image-name:1033-develop-7e414712上传您删除的图层,并且一切正常。


Fre*_*son 6

由于连接不良,出现了同样的问题。在文档中,这是dockerd 命令

对于 Linux,只需添加:

$ dockerd --max-concurrent-downloads 2
$ dockerd --max-download-attempts 10
Run Code Online (Sandbox Code Playgroud)

对于 Windows docker 桌面,打开设置 -> Docker Engine 并弹出以下内容以及最适合您的数字。您可以在上面的文档中看到所有选项。

在此输入图像描述


Abh*_*D K 5

这主要是因为网络弱(因为我使用的是移动热点)

配置docker 守护进程以减少tcp 数据包

$ dockerd --max-concurrent-downloads <int>  
Run Code Online (Sandbox Code Playgroud)

这里<int> 建议您要同时下载的 docker pull 层数。
默认为 3

在我的情况下,我已经设置为 2

$ dockerd --max-concurrent-downloads 2 &>/dev/null  
Run Code Online (Sandbox Code Playgroud)

这样做的缺点是牺牲了您宝贵的时间:)
花时间像地狱一样