網絡是爲了實現容器間或容器與外接進行通訊,Docker提供了6種網絡模式來解決不一樣場景下的鏈接方案: bridge
、host
、overlay
、macvlan
、none
、network plugin
。php
bridge模式是默認容器啓動默認分配的網絡方式,容器使用獨立的網絡命名空間(namespace),並鏈接到docker0虛擬網卡上。mysql
host模式是容器與Docker主機共享同一網絡命名空間(namespace),Docker主機的網絡協議棧、路由表、iptables規則、網卡、IP、端口等等都是共享的。容器跟宿主機都在同一網絡視圖下。這個模式很好的解決了容器與外界通訊地址轉換的問題,能夠直接使用宿主機的IP進行通訊,那麼這裏的網絡流量和壓力走的都是宿主機的網卡,性能會比較高。不過這個有風險,由於容器跟宿主機是共享一套網絡機制,沒有隔離。那麼會引發網絡資源與宿主機的競爭和衝突關係。規模小的場景,可使用這種模式。主機網絡驅動程序僅適用於Linux主機,不支持Windows及Mac平臺。sql
overlay模式是多個Docker主機之間的分佈式網絡解決方案。該網絡位於特定於主機的網絡之上,容許鏈接到它的容器(包括羣集服務容器)安全地進行通訊。Docker透明地處理每一個數據包與Docker守護程序主機和正確的目標容器之間正確的的路由。docker
macvlan跟overlay同樣也是跨主機互聯的驅動方案。在某些大流量或性能要求較高的場景下,但願直接鏈接到物理網絡,在這種狀況下,您可使用macvlan網絡驅動程序爲每一個容器的虛擬網絡接口分配MAC地址,使其看起來像是直接鏈接到物理網絡的物理網絡接口。apache
none模式用於徹底禁用容器上的網絡堆棧,容器單獨使用一個網絡命名空間(namespace),僅建立迴環設備,若是須要容器鏈接其餘網絡,則須要手動進行網絡相關的設置,靈活性最高但也是最複雜。centos
以上五種驅動都是docker原生提供的,若是以上五種不能知足你的要求,除了原生提供,還支持第三方的驅動模式接入。好比經常使用的 flannel、pipework、weave 和 calico 等等。安全
docker network ls網絡
docker network create 分佈式
docker network connect post
docker network disconnect
docker network inspect
docker network rm
docker network prune
docker run -it --network=
docker network create lamp-network
docker run -it --network lamp-network --network-alias apache centos:latest
docker run -it --network lamp-network --network-alias php centos:latest
docker run -it --network lamp-network --network-alias mysql centos:latest