我试图了解网络数据包的幕后情况,该网络数据包来自连接到主机的线路并定向到 Docker 容器内的应用程序。
如果它是一个经典的 VM,我知道到达主机的数据包将由管理程序(例如 VMware、VBox 等)传输到 VM 的虚拟 NIC,并从那里通过来宾操作系统的 TCP/IP 堆栈,最终到达应用程序。
在 Docker 的情况下,我知道来自主机的数据包从主机的网络接口转发到docker0
网桥,该网桥连接到以容器内veth
的虚拟接口结束的一对。eth0
但在那之后呢?由于所有 Docker 容器都使用宿主内核,假设数据包由宿主内核的 TCP/IP 堆栈处理是否正确?如果是这样,怎么做?
我真的很想阅读有关幕后实际发生的事情的详细解释(或者如果您知道资源可以随意链接它)。我已经仔细阅读了这个页面,但它并没有说明一切。
提前感谢您的回复。