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小時自動旋轉密鑰。