本章開始討論 Docker 網絡。docker
咱們會首先學習 Docker 提供的幾種原生網絡,以及如何建立自定義網絡。而後探討容器之間如何通訊,以及容器與外界如何交互。安全
Docker 網絡從覆蓋範圍可分爲單個 host 上的容器網絡和跨多個 host 的網絡,本章重點討論前一種。對於更爲複雜的多 host 容器網絡,咱們會在後面進階技術章節單獨討論。網絡
Docker 安裝時會自動在 host 上建立三個網絡,咱們可用 docker network ls
命令查看:性能
下面咱們分別討論它們。學習
故名思議,none 網絡就是什麼都沒有的網絡。掛在這個網絡下的容器除了 lo,沒有其餘任何網卡。容器建立時,能夠經過 --network=none
指定使用 none 網絡。spa
咱們不由會問,這樣一個封閉的網絡有什麼用呢?code
其實還真有應用場景。封閉意味着隔離,一些對安全性要求高而且不須要聯網的應用可使用 none 網絡。ip
好比某個容器的惟一用途是生成隨機密碼,就能夠放到 none 網絡中避免密碼被竊取。table
固然大部分容器是須要網絡的,咱們接着看 host 網絡。效率
鏈接到 host 網絡的容器共享 Docker host 的網絡棧,容器的網絡配置與 host 徹底同樣。能夠經過 --network=host
指定使用 host 網絡。
在容器中能夠看到 host 的全部網卡,而且連 hostname 也是 host 的。host 網絡的使用場景又是什麼呢?
直接使用 Docker host 的網絡最大的好處就是性能,若是容器對網絡傳輸效率有較高要求,則能夠選擇 host 網絡。固然不便之處就是犧牲一些靈活性,好比要考慮端口衝突問題,Docker host 上已經使用的端口就不能再用了。
Docker host 的另外一個用途是讓容器能夠直接配置 host 網路。好比某些跨 host 的網絡解決方案,其自己也是以容器方式運行的,這些方案須要對網絡進行配置,好比管理 iptables,你們將會在後面進階技術章節看到。
下一節討論應用更廣的 bridge 網絡。