在docker 1.12 之后,可以直接使用Swarm,无需再进行安装。
从上一节中看到 docker network ls 命令只会显示3种网络模式。
先简单介绍Swarm 的命令
swarm init 在管理节点上创建一个节点
swarm join 加入一个新的节点到已有集群
docker swarm join-token worker 查看加入一个worker到集群的命令
docker swarm join-token manager 查看一个加入manager到集群的命令
swarm update 更新一个Swarm集群
swarm leave 离开一个Swarm集群
当我们使用docker swarm init 后,使用docker network ls 会发现多了两个网络模式。
同时会发现宿主机多了一个bridge设备 docker_gwbridge
使用docker network inspect 来查看这个网络的属性
Internal: 内部模式,禁止外部对所创建的网络的访问
enable_icc 是否允许该网桥上的容器内部通信
enable_ip_masquerade: 是否允许进行地址伪装,即通过iptables 进行snat,只有为true的时候,才能访问外网。且net.ipv4.ip_forward=1 。这个配置是docker服务级别的。默认docker服务启动的时候,会把forward属性打开。
我们还看到ingress这个网络的driver是overlay,但是我们没有看到任何关于这个网络的设备。我们首先用docker network inspect 来查看属性
我们这里记住这个id
然后我们来看下docker的network namespace有没有变化 .
我们发现有个netns的名称跟ingress网络的id有关的(1-<ingressID>)
这时候我们进入这个netns,然后看这个netns有什么设备
我们发现这个netns内部有个br0网桥,同时还有vxlan类型的网卡,这个网卡就是VTEP ,来封装和解封 vxlan的包。
接下来,我们使用docker service 创建一个service(ingress 网络的attach属性为false,即我们无法直接使用该网络)
待续...
参考: https://www.jianshu.com/p/3b9389084701