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。
这将以顺序方式拉取各层,因此需要时间,但是,是的,这是通过弱网络连接下载大图像文件的替代解决方案。
我遇到了这个问题,因为注册表 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上传您删除的图层,并且一切正常。
由于连接不良,出现了同样的问题。在文档中,这是dockerd 命令。
对于 Linux,只需添加:
$ dockerd --max-concurrent-downloads 2
$ dockerd --max-download-attempts 10
Run Code Online (Sandbox Code Playgroud)
对于 Windows docker 桌面,打开设置 -> Docker Engine 并弹出以下内容以及最适合您的数字。您可以在上面的文档中看到所有选项。
这主要是因为网络弱(因为我使用的是移动热点)
配置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)
这样做的缺点是牺牲了您宝贵的时间:)
花时间像地狱一样
| 归档时间: |
|
| 查看次数: |
23947 次 |
| 最近记录: |