docker容器是否有自己的TCP/IP堆栈?

Man*_*ndo 29 networking tcp-ip docker linux-containers

我正在尝试了解连接到主机并连接到Docker容器内的应用程序的网络数据包所发生的情况.

如果它是一个经典的虚拟机,我知道到达主机的数据包将由虚拟机管理程序(比如VMware,VBox等)传输到虚拟机的虚拟网卡,并从那里通过客户机操作系统的TCP/IP堆栈传输,终于达到了申请.

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

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

在此先感谢您的回复.

TvE*_*TvE 9

网络堆栈,如"代码",绝对不在容器中,它的内核中只有一个由主机和所有容器共享(你已经知道了).每个容器具有的是它自己独立的网络命名空间,这意味着它有自己的网络接口和路由表.

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

我希望这能给你足够的指点来深入挖掘.