我试图理解以下之间的关系:
eth0;以及docker0桥;及eth0接口据我所知,码头工人:
docker0桥,然后为它分配一个与主机上运行的任何内容没有冲突的可用子网;然后docker0绑定到在主机上运行的eth0,然后docker0,这样容器的eth0接口就连接到主机上的docker0,而docker0又连接到主机上的eth0这样,当主机外部的东西试图与容器通信时,它必须将消息发送到主机IP上的一个端口,然后转发到docker0桥,然后广播到主机上运行的所有容器,对吗?
而且,这样,当容器需要与主机之外的东西通信时,它有自己的IP (从docker0子网租用),因此远程调用方会将消息视为来自容器的IP。
因此,如果我上面说的是不正确的,请首先为我澄清!
假设我或多或少是正确的,我主要关心的是:
发布于 2017-03-03 11:52:49
我不会说你很清楚在码头建立关系网的概念。让我首先澄清这一部分:
事情是这样的:
现在讨论一下网络名称空间:
Net命名空间,
现在,除了名称空间之外,Linux内核中还有第二个特性,使创建容器成为可能:C组(或控件组)。
TL/DL
简而言之:容器之所以成为可能,是因为内核的两个主要特性:名称空间和C-组。
群体 名称空间
你不能影响你看不到的东西。
回到您的问题,当主机接收到用于容器的数据包时,将其封装在层中,以便每个层帮助网络控制器,网络控制器逐层剥离数据包,将其发送到其目的地。(同样地,在输出时,数据包被逐层封装)
所以,我认为这也回答了你们的两个问题。
P.S.:
如果有人发现一些错误的信息,请在评论中告诉我。我已经写了这个匆忙,将更新它与更好的评论文本很快。
谢谢。
https://stackoverflow.com/questions/32862146
复制相似问题