创建Windows容器后,暂时没有网络连接

时间:2020-11-03 12:54:53

标签: docker docker-networking docker-desktop

问题:

当Windows容器刚创建后,我注意到一个问题,它没有互联网连接-curl或ping无法访问google.com或网络中的服务器。重试几次后,容器将建立连接,从此开始,每次ping操作都会成功。 仅在Windows docker主机之一上会发生此问题。主机每次ping通时,问题仅在容器内且仅在创建后发生。 主机规格: Windows Server 2019 Standard版本1809,操作系统内部版本:17763.1369 Docker Desktop 2.4.0.0稳定,引擎19.03.13,撰写1.27.4 主机上的网络适配器:

PS C:\Windows\system32> Get-NetAdapter

Name                      InterfaceDescription                    ifIndex Status       MacAddress             LinkSpeed
----                      --------------------                    ------- ------       ----------             ---------
bond0                     Microsoft Network Adapter Multiplexo...      10 Up           **        2 Gbps
vEthernet (Ethernet)                                                   38 Up          **        10 Gbps
Ethernet                  Intel(R) I350 Gigabit Network Connec...       9 Up           **         1 Gbps
Ethernet 2                Intel(R) I350 Gigabit Network Conn...#2       7 Up           **         1 Gbps
vEthernet (nat)           Hyper-V Virtual Ethernet Adapter             11 Up           **       10 Gbps

复制步骤:

在servercore映像上构建容器并ping谷歌10次。 com。

Run.bat文件:

FOR /L %%A IN (1,1,10) DO ( curl --retry 5 -v --fail http://google.com )

Dockerfile:

FROM mcr.microsoft. com/windows/servercore:1809
COPY run.bat .
RUN “run.bat”

并在循环中运行“ docker build”命令创建容器,从容器内ping 10次google,杀死容器并再次运行。示例如何从Jenkinsfile执行此操作:

timeout(time: 1, unit: ‘HOURS’) {

    node(“problematicWindowsHost”) {

        while (true) {

            docker.build(“pinger”, “-f Dockerfile --no-cache .”)

            sleep time: 1, unit: ‘SECONDS’
        }
    }
}

结果: 在运行1小时的情况下,偶尔第一个curl命令将失败,并在2次重试后将成功。值得一提的是,每隔1秒从主机直接对主机ping Google时,它每次都可以正常运行几个小时。该问题仅出现在Windows容器中。

奇怪的是,我们还有两台其他计算机,它们具有相同的操作系统和相同的Docker桌面版本(不同的硬件),我们也在此处进行了测试,并且没有出现此问题。我认为这是多个网络适配器与Docker Desktop处理网络的方式之间的某种关联。我正在寻找解决方案

0 个答案:

没有答案