Docker 爲咱們提供了多種類型的網絡模式,咱們能夠根據本身的需求使用系統默認的網絡或者建立本身的網絡。php
在咱們安裝完 Docker enginee 後, 會自動生成3種默認的網絡模式。 咱們能夠運行命令查看:node
$ docker network ls
docker
bridge - 使用Docker 0 網絡, containers只能在一個Host上面進行通訊。在建立Container時,若是不特殊指定網絡,會默認使用bridge。建立在bridge網絡上面的container裏面,咱們在container的host文件(# cat /etc/hosts
)能夠看到對用IP信息網絡
root@0cb243cd1293:/# cat /etc/hosts
oop
172.17.0.2 3386a527aa08
spa
127.0.0.1 localhost
code
::1 localhost ip6-localhost ip6-loopback
router
fe00::0 ip6-localnet
blog
ff00::0 ip6-mcastprefix
ip
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
none - ?? 貌似沒啥用啊
host - 基於本機的Docker host, 貌似沒啥用。
bridge 網絡模式拓撲圖, 因爲bridge自己不可以訪問外部或被外部訪問,咱們能夠暴漏端口到外部以實現通訊。可是bridge模式要求全部container必需要一個Docker host裏
docker_gwbridge
網絡這個網絡也是Docker engine 本身生成的,只不過是當咱們運行Docker swarm 之後 (建立網絡+添加節點),自動生成 overlay 網絡,用於爲swarm 提供 overlay 網絡通訊。
因爲 Swarm 使用了內置的overlay網絡「docker_gwbridge
」, 因此當咱們要在不適用swarm mode 且要求在不一樣的container之間通訊時,就須要用到這個網絡模式。
因爲使用這種模式必需要提供 「key-value stores」支持,因此配置起來會比較發雜。咱們先看一下她的拓撲圖