覆盖网络驱动程序的目的是什么?

覆盖网络驱动程序的目的是什么?

下面是在 ubuntu 上运行的命令,overlay为 swarm 集群创建网络驱动程序,而不是使用bridge网络驱动程序

     $ docker network create -d overlay xyz


$ docker network ls                      
NETWORK ID          NAME                DRIVER        SCOPE
9c431bc9fec7        bridge              bridge        local
88a4c6a29fa4        docker_gwbridge     bridge        local
10a4bc649237        host                host          local
o79qllmq86xw        ingress             overlay       swarm
417aca5efd6b        none                null          local
nsteeoxfu9b1        xyz                 overlay       swarm
$   

$ docker service create --name service_name --network xyz -p 80:80 --repicas 12 <image>

使用选项的服务命令的具体目的是什么--network xyz

编辑

这与……网络命名空间的工作原理有关吗?这里提到...

https://youtu.be/kl8roLaLy-g

https://youtu.be/_WgUwUf1d34

如果是,每个网络命名空间是否是同一主机上的专用(单独)TCP-IP-以太网层堆栈?

答案1

Docker使用不同类型的网络驱动来实现容器与外部网络的通信。默认的网络驱动是bridge驱动程序。使用此驱动程序,软件桥允许连接到同一桥的容器相互通信。连接到不同桥的容器是相互隔离的。桥接驱动程序的范围也仅限于单个主机,因此位于不同主机上的容器无法相互通信。

使用 Docker Swarm 时,您通常会进行多主机设置,并在每个主机上运行 docker 守护进程。为了方便沟通就是这种场景,就需要overlay驱动程序。每个 docker 守护进程都使用一个bridge网络(名为“docker_gwbridge”),并且该overlay网络位于这些特定于主机的网络的顶部(覆盖)。然后,驱动overlay程序可以允许不同 Docker 守护进程之间进行通信,从而促进 Swarm 功能。

有关更多详细信息,请参阅有关网络的 Docker 文档

问题中的两个特定命令创建然后使用新overlay网络。这docker网络创建命令创建您的新overlay网络。这码头服务创建命令定义新服务,并指定它附加到先前创建的overlay网络。

相关内容