使用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,我仍然感到困惑。 它究竟做了什么?