是時候Docker: 6 docker網絡

目錄

簡介

網絡是爲了實現容器間或容器與外接進行通訊,Docker提供了6種網絡模式來解決不一樣場景下的鏈接方案: bridgehostoverlaymacvlannonenetwork pluginphp

根據不一樣場景選擇網絡

  • 當須要Docker主機隔離時主機網絡最佳的解決方案。
  • 當須要跨Docker主機實現網絡互聯時覆蓋網絡是最佳選擇。
  • 當您從大流量須要像物理網卡性能工做時Macvlan網絡最佳選擇,每一個主機都具備惟一的MAC地址。第三方網絡插件容許您將Docker與專用網絡堆棧集成。

bridge

bridge模式是默認容器啓動默認分配的網絡方式,容器使用獨立的網絡命名空間(namespace),並鏈接到docker0虛擬網卡上。mysql

host

host模式是容器與Docker主機共享同一網絡命名空間(namespace),Docker主機的網絡協議棧、路由表、iptables規則、網卡、IP、端口等等都是共享的。容器跟宿主機都在同一網絡視圖下。這個模式很好的解決了容器與外界通訊地址轉換的問題,能夠直接使用宿主機的IP進行通訊,那麼這裏的網絡流量和壓力走的都是宿主機的網卡,性能會比較高。不過這個有風險,由於容器跟宿主機是共享一套網絡機制,沒有隔離。那麼會引發網絡資源與宿主機的競爭和衝突關係。規模小的場景,可使用這種模式。主機網絡驅動程序僅適用於Linux主機,不支持Windows及Mac平臺。sql

overlay

overlay模式是多個Docker主機之間的分佈式網絡解決方案。該網絡位於特定於主機的網絡之上,容許鏈接到它的容器(包括羣集服務容器)安全地進行通訊。Docker透明地處理每一個數據包與Docker守護程序主機和正確的目標容器之間正確的的路由。docker

macvlan

macvlan跟overlay同樣也是跨主機互聯的驅動方案。在某些大流量或性能要求較高的場景下,但願直接鏈接到物理網絡,在這種狀況下,您可使用macvlan網絡驅動程序爲每一個容器的虛擬網絡接口分配MAC地址,使其看起來像是直接鏈接到物理網絡的物理網絡接口。apache

none

none模式用於徹底禁用容器上的網絡堆棧,容器單獨使用一個網絡命名空間(namespace),僅建立迴環設備,若是須要容器鏈接其餘網絡,則須要手動進行網絡相關的設置,靈活性最高但也是最複雜。centos

插件網絡

以上五種驅動都是docker原生提供的,若是以上五種不能知足你的要求,除了原生提供,還支持第三方的驅動模式接入。好比經常使用的 flannel、pipework、weave 和 calico 等等。安全

Docker network管理命令

顯示網絡列表

docker network ls網絡

建立網絡

docker network create 分佈式

  • --config-from 複製其餘網絡配置
  • --driver 指定網絡模式
  • --gateway 指定網關
  • --internal 限制只能內部訪問
  • --ip-range 從子網範圍分配容器IP
  • --ipv6 啓用IPv6網絡
  • --subnet 指定網段

配置容器鏈接到指定的網絡

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

相關文章
相關標籤/搜索