下面是在 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
?
编辑
这与……网络命名空间的工作原理有关吗?这里提到...
和
如果是,每个网络命名空间是否是同一主机上的专用(单独)TCP-IP-以太网层堆栈?
答案1
Docker使用不同类型的网络驱动来实现容器与外部网络的通信。默认的网络驱动是bridge
驱动程序。使用此驱动程序,软件桥允许连接到同一桥的容器相互通信。连接到不同桥的容器是相互隔离的。桥接驱动程序的范围也仅限于单个主机,因此位于不同主机上的容器无法相互通信。
使用 Docker Swarm 时,您通常会进行多主机设置,并在每个主机上运行 docker 守护进程。为了方便沟通就是这种场景,就需要overlay
驱动程序。每个 docker 守护进程都使用一个bridge
网络(名为“docker_gwbridge”),并且该overlay
网络位于这些特定于主机的网络的顶部(覆盖)。然后,驱动overlay
程序可以允许不同 Docker 守护进程之间进行通信,从而促进 Swarm 功能。
有关更多详细信息,请参阅有关网络的 Docker 文档。
问题中的两个特定命令创建然后使用新overlay
网络。这docker网络创建命令创建您的新overlay
网络。这码头服务创建命令定义新服务,并指定它附加到先前创建的overlay
网络。