docker集装箱是否有自己的TCP / IP堆栈?

我试图了解在连接到主机的线路上发送的一个networking数据包发送到一个Docker容器内的应用程序的情况。

如果它是一个典型的虚拟机,我知道到达主机的数据包将被虚拟机pipe理程序(比如VMware,VBox等)发送到虚拟机的虚拟网卡,然后通过客户机操作系统的TCP / IP协议栈,最后到达申请。

在Docker的情况下,我知道来自主机的数据包从主机的networking接口转发到docker0网桥,该网桥连接到在容器内的虚拟接口eth0上结束的veth对。 但之后? 由于所有Docker容器都使用主机内核,因此假定数据包由主机内核的TCP / IP堆栈处理是正确的吗? 如果是这样,怎么样?

我真的很想阅读一个详细的解释(或者如果你知道一个资源,可以自由地链接)关于真正发生的事情。 我已经仔细阅读了这个页面,但并没有说明一切。

在此先感谢您的答复。

在“代码”中,networking堆栈绝对不在容器中,它的内核中只有一个由主机和所有容器共享(你已经知道这一点)。 每个容器都有自己独立的networking名称空间 ,这意味着它有自己的networking接口和路由表。

这里有一个简短的文章介绍一些例子的概念: http : //blog.scottlowe.org/2013/09/04/introducing-linux-network-namespaces/我发现这篇文章也有帮助: http : //containerops.org /十一分之二千零一十三/ 19 / LXC联网/

我希望这给你足够的指引,深入挖掘。