使用docker-ed应用程序从客户端到服务器的networking初始化滞后

我在企业环境中有一个客户端和服务器。 netcat客户端到服务器是即时的。

  _______SERVER______ ______CLIENT_______ | | | | | | <---------> | | | 20.20.20.20 | | | |___________________| |___________________| > netcat -l 8000 > netcat 20.20.20.20 8000 blahblah blahblah 

然而,与服务器上的容器networking..

  _______SERVER______ ______CLIENT_______ | | | | | __container__ | | | | | | | <---------> | | | | 30.00.00.01 | | | | | |_____________| | | | | | | | | 20.20.20.20 | | | |___________________| |___________________| > docker run -p 8000:8000 -t -i ubuntu netcat -l 8000 >netcat 20.20.20.20 8000 (blank for 10 seconds) blahblah blahblah blah2 blah2 

所以区别在于,当我在一个容器中使用netcat时,第一条消息需要大约10秒的时间出现。 为什么是这样? 之后,消息是即时的。

因为没有容器的netcat是即时的,我很确定docker有一些棘手的问题。

我似乎已经解决了这个问题。 使用-n flag使所有的工作都很好。 所以,而不是

 docker run -p 8000:8000 -t -i ubuntu netcat -l 8000 

你用

 docker run -p 8000:8000 -n -t -i ubuntu netcat -l 8000 

根据Docker的-n标志是

启用此容器的networking

尽pipe如此,即使没有networking,我仍然感到困惑。 它究竟做了什么?

Interesting Posts