我知道docker没有网络类型,没有为容器分配IP地址,除了loopback接口外没有创建网络接口。
我想知道我们可以使用none网络类型的任何用例,我的意思是在哪种情况下我们需要运行没有IP或接口的容器。
我已经提到了这个question,但它没有回答我们可以使用它的确切用例。
答案 0 :(得分:1)
首先,如weaveworks/weave issue 1394中所述:
--net=none
的含义尚不清楚。这可能意味着“根本没有网络”#34; (在这种情况下,编织网络也应该被禁用),或者#34;没有Docker网络" (这是我在这里选择的解释)。
这就是wave network正在做的事情:
我们使用
--net=none
创建网络命名空间,注入编织界面,然后启动实际容器 我们还在具有外部连接的编织网络中运行默认网关。我们这样做的原因是服务倾向于绑定到错误的接口。在容器启动之前创建单个界面非常重要。
您会在 Calico ;
中找到类似的用例本教程介绍如何在没有Docker网络(即
–net=none
)的Docker环境中设置Calico群集。使用此选项,Docker会创建一个具有自己的网络堆栈的容器,但不会采取任何步骤来配置其网络。
在本教程中,我们使用calicoctl
命令行工具将容器添加到Calico网络中,而不是让Docker配置网络:添加所需的接口和路由到容器,并使用正确的端点信息配置Calico
答案 1 :(得分:1)
谢谢@VonC我从你的回答中得到了一个想法。
似乎docker none
网络类型被其他网络插件(如印花布,编织等)用来提供自己的网络堆栈。
Docker网络模型基于CNM(容器网络模型),而另一种模型称为CNI(容器网络接口),网络分布如calico,weave等使用。
我猜这些网络插件(使用CNI模型的网络插件)使用none
网络类型,因此在没有网络的情况下创建了一个容器,这些容器在这些网络上提供了自己的网络。