Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 0、Docker桥驱动程序和容器之间的关系_Docker_Docker Networking - Fatal编程技术网

Docker 0、Docker桥驱动程序和容器之间的关系

Docker 0、Docker桥驱动程序和容器之间的关系,docker,docker-networking,Docker,Docker Networking,我在看一张幻灯片,看到了这张幻灯片: 我想弄明白这一点。从: “默认情况下,Docker服务器创建并配置主机系统的docker0一个名为docker0的网络接口,这是一个以太网桥设备。如果在启动容器时未指定其他网络,则容器将连接到网桥,所有来自和前往容器的流量将通过网桥流向Docker守护进程,Docker守护进程代表容器处理路由。” 但是我对这里的流量仍然有点困惑。假设我在一个新主机上安装了Docker。我假设docker0是在安装时创建和配置的。所以现在我的主机上有这个docker0以太网

我在看一张幻灯片,看到了这张幻灯片:

我想弄明白这一点。从:

“默认情况下,Docker服务器创建并配置主机系统的
docker0
一个名为
docker0
的网络接口,这是一个以太网桥设备。如果在启动容器时未指定其他网络,则容器将连接到网桥,所有来自和前往容器的流量将通过网桥流向Docker守护进程,Docker守护进程代表容器处理路由。”

但是我对这里的流量仍然有点困惑。假设我在一个新主机上安装了Docker。我假设
docker0
是在安装时创建和配置的。所以现在我的主机上有这个
docker0
以太网桥

现在,假设我在新Docker主机上启动了一个容器:

docker run -it -p 9200:9200 -d --name myapp myapp

由于我没有指定网络驱动程序,因此默认情况下为我选择了
网桥
。根据上面文档中的简介,容器现在应该通过该
docker0
网桥发送/接收流量。但是,在上面的图中,指示没有流量流入/流出基于网桥的容器(C4、C5、C6)来自
docker0
,我想知道:为什么?!有什么想法吗?提前谢谢!

你是对的,这个方案并不完全符合正在发生的事情。我没有看视频,也许“图片”是一个具体时刻的快照。也许我们应该看视频来理解上下文

无论如何,当Docker创建
docker0
inteface时,会使用新链创建一些iptables规则(Docker和Docker-ISOLATION)。默认情况下,Docker容器只能从主机访问。然后使用Docker run命令上的
-p
选项,您可以将主机上的端口直接映射到容器。这样,您就可以访问主机上确实位于容器上的特定端口。您可以在运行容器之前和之后使用检查NAT表e> iptables-tnat-L。您将看到映射的区别和规则


是的,容器是在同一网络上创建的,它们可以尝试在该网络上进行通信。默认情况下,docker使用的网络范围是172.17.0.0/16,因此第一个容器将是172.17.0.2,第二个容器将是172.17.0.3,依此类推。(172.17.0.1是docker的ip).

很好的信息。请注意,第一个容器从
172.17.0.2开始(.1是主机本身)谢谢@OscarAkaElvis(+1)-为了澄清,我在上面的第一句话中发布了一个指向视频的链接,我的截图是从该视频的10:45开始拍摄的。另外,在上面的截图中,以下两个之间的区别是什么:(1)
docker0
,(2)集装箱的“桥”和(3)标签为
br-ee40a8236479
?再次感谢!对@Robert。更正我看了视频:docker0是主机1中的默认网桥,br-ee40a8236479是主机2中的用户定义网桥。主机1和主机2在底层网络中有一些连接。容器网桥指的是容器连接到默认网桥的事实或用户定义的桥。