【问题标题】:Docker connectivity issues (to Azure DevOps Services from self hosted Linux Docker agent)Docker 连接问题(从自托管 Linux Docker 代理到 Azure DevOps 服务)
【发布时间】:2021-05-06 09:17:21
【问题描述】:

我正在寻找一些关于调试一些极其痛苦的 Docker 连接问题的建议。

特别是,对于 Azure DevOps Services Git 存储库,我正在运行一个自托管(本地)dockerized Linux CI(根据https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/docker?view=azure-devops#linux 设置),几个月来一直运行良好。

这一切都在公司网络上运行,从上周开始,我的 docker 容器的网络连接变得非常不稳定:

  • 具体来说,它会间歇性地断开网络连接,这也可以通过 Azure DevOps 代理的日志看到,然后继续尝试重新连接。

  • 下载 Git LFS 对象时尤其会发生这种情况。通过 GIT_TRACE=1 启用额外的跟踪会突出显示许多连接失败和重试:

    trace git-lfs: xfer: 无法从字节 N 继续下载“SHA”:预期状态代码 206,收到 200。从开始重新下载

  • 在这样的 LFS 拉/取期间,有时容器甚至停止响应,因为 docker container list 命令只响应:

    来自守护进程的错误响应:i/o 超时

    因此,守护程序无法自行恢复,需要手动重启(以备份 CI)。

我还看到了网络性能的显着差异:

  • 在不同机器上的容器实例(从同一映像创建)中手动克隆相同的 Git 存储库(包括 LFS 对象,全部从头开始),在我的开发笔记本电脑上花费不到 2 分钟(已连接从家里通过 VPN),而相同的操作在运行两台不同 Win10 机器的容器上可能需要长达 20 分钟 (!)(公司网络,实际位于办公室,因此没有 VPN。
  • 显然这与主机网络连接本身无关,因为在容器外的相同 Win10 主机(公司网络/办公室)上进行克隆只需 14 秒!

因此我怀疑一些网络配置问题(例如 Hyper-V vEthernet 适配器?防火墙?代理?或其他任何误入歧途的看门狗?),但经过三天的调试,我不太确定如何进一步调查这个问题,因为我的想法和专业知识已经用完了。有什么想法/建议/提示吗?

我应该补充一点,LFS 配置选项 (such as lfs.concurrenttransfers and lfs.basictransfersonly) 并没有真正帮助,git config http.version 类似(或者只是删除一些较大的文件)


更新

它实际上似乎与自托管代理无关,而是我公司网络中更普遍的 docker network cfg 问题。

在我的 VPN 机器(在家中运行)上运行以下运行速度始终如一:

docker run -it
ubuntu bash -c "apt-get update; apt-get install -y wget; start=$SECONDS;
wget http://cdimage.ubuntu.com/lubuntu/releases/18.04/release/lubuntu-18.04-alternate-amd64.iso;
echo Duration: $(( SECONDS - start )) seconds"

与powershell下载对比(在主机上):

$start=Get-Date
$(New-Object
net.webclient).Downloadfile("http://cdimage.ubuntu.com/lubuntu/releases/18.04/release/lubuntu-18.04-alternate-amd64.iso",
"e:/temp/lubuntu-18.04-alternate-amd64.iso")
'Duration: {0:mm}
min {0:ss} sec' -f ($(Get-Date)-$start)

企业网络

  • Docker:1560 秒(=26 分钟!)
  • Windows 主机系统:持续时间:00 分 15 秒

开发笔记本电脑(VPN,在家):

  • Docker:144 秒(=2 分 24 秒)
  • Windows 主机系统:持续时间:02 分 16 秒

查看https://github.com/docker/for-win/issues/698 中讨论的问题(以及对我不起作用的建议解决方法),这似乎是 Windows / hyper-v 的一个重要问题..

【问题讨论】:

  • 能否创建一个新的自托管代理再试一次,然后在这里分享结果?
  • 它实际上似乎不是关于自托管代理,而是我公司网络中更普遍的 docker 网络问题。 - 见上面的更新

标签: docker hyper-v docker-for-windows docker-networking git-lfs


【解决方案1】:

当我的公司最终决定从 Win10 1803 升级到 1909(WSL 随附,取代 Hyper-V)时,整个问题“自行解决”.. ? 现在一切都运行得非常顺利(我一直运行这些测试将近 20 次)

【讨论】:

    猜你喜欢
    • 2021-11-14
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2021-11-14
    • 2020-03-27
    • 1970-01-01
    相关资源
    最近更新 更多