docker网络模式:nginx
一、bridge :默认网络驱动程序。若是未指定驱动程序,则建立的bridge网络类型.当您须要多个容器在同一个Docker主机上进行通讯时,用户定义的桥接网络是最佳选择。docker
二、host :对于独立容器,删除容器和Docker主机之间的网络隔离,并直接使用主机的网络。host 仅适用于Docker 17.06及更高版本的swarm服务.当网络堆栈不该与Docker主机隔离时,主机网络是最好的网络
三、overlay:覆盖网络将多个Docker守护程序链接在一块儿,并使群集服务可以相互通讯。您还能够使用覆盖网络来促进群集服务和独立容器之间的通讯,或者在不一样Docker守护程序上的两个独立容器之间进行通讯。此策略消除了在这些容器之间执行OS级别路由的须要.当您须要在不一样Docker主机上运行的容器进行通讯时,或者当多个应用程序使用swarm服务协同工做时,覆盖网络是最佳选择性能
四、macvlan:Macvlan网络容许您为容器分配MAC地址,使其显示为网络上的物理设备。Docker守护程序经过其MAC地址将流量路由到容器。macvlan 在处理指望直接链接到物理网络的传统应用程序时,使用驱动程序有时是最佳选择,而不是经过Docker主机的网络堆栈进行路由.当您从VM设置迁移或须要容器看起来像网络上的物理主机时,Macvlan网络是最佳的,每一个主机都具备惟一的MAC地址加密
五、none:对于此容器,禁用全部网络。一般与自定义网络驱动程序一块儿使用。none不适用于群组服务。spa
六、network plugins:您能够使用Docker安装和使用第三方网络插件。这些插件可从 Docker Hub 或第三方供应商处得到。第三方网络插件容许您将Docker与专用网络堆栈集成插件
下面是两种经常使用的网络模式: token
bridge分为默认网桥和用户定义网桥。建立容器没有指定网络时会建立默认网桥,用户能够经过docker network create来定义桥接网络。ip
docker network create/rm/inspect my-net路由
docker network prune/ls
docker run -d --name nginx-1 --network my-net -p 80:80 nginx:latest #172.18.0.2
docker run -d --name nginx-2 nginx:latest #172.17.0.2
docker network connect my-net nginx-2
docker inspect nginx-2 #172.18.0.4
docker network disconnect my-net nginx-1
docker inspect nginx-1 #"IPAddress": ""
overlay网络:
须要如下端口打开来往于覆盖网络上参与的每一个Docker主机的流量:
1、用于集群管理通讯的TCP端口2377
2、TCP和UDP端口7946用于节点之间的通讯
3、UDP端口4789用于覆盖网络流量
建立overlay网络以前,要将docker初始化为集群管理器swarm manager或者将docker加入到现有的集群中
docker swarm init
docker swarm join --token SWMTKN-1-0whgl9p83b3ws54oc150588d3v7sc638a1b3z2aeitao7z4xly-7r70wxzaa22y2hf2mug5fipkb 172.27.0.3:2377#加入集群
docker swarm join-token manager #为集群加入manager
docker network create -d overlay my-overlay #建立用于swarm服务的overlay
docker network create -d overlay --attachable my-att-overlay #建立可由集群服务或独立容器用于在其余docker或其余独立容器相互通讯的overlay
docker network create -d overlay --attachable --opt encrypted my-att-overlay2 #--opt 加密overlay上的数据传送。在vxlan级别启用IPSEC加密,会产生性能损失,管理器节点每12小时自动旋转密钥。