Docker 在默認狀況下,會自動創建一個 bridge, 一個 host 和一個 none的網絡:docker
$ docker network ls NETWORK ID NAME DRIVER SCOPE e5b9dbaf44ec bridge bridge local 2bb7ffed7411 host host local cffd99fe62bc none null local
能夠看到,driver類型爲bridge的網絡的名字也爲bridge。在默認狀況下,container都是使用的這個bridge的網絡,此時container是能夠訪問外網和其餘container的(須要經過IP地址)。網絡
默認的名爲bridge的網絡是有不少限制的,爲此,咱們能夠自行建立bridge類型的網絡。默認的bridge網絡與自建bridge網絡有如下區別:code
docker network inspect bridge
場景: 當多個獨立的 container 之間須要彼此訪問時,推薦使用自建的 bridge 網絡,而不是使用 --link
,文檔
$ docker network create --driver bridge my-network 30b752110d07e30d8facb6448e76033aa430b519a8b14ce1ffd34e65054547d3
my-netowkr
docker run -it --rm --name alpine1 --network my-network alpine docker run -it --rm --name alpine2 --network my-network alpine
其中:-it
提供人機交互;--rm
關閉 container 後,容器自動刪除;--name
容器顯示的名稱;--network
要加入的網絡名稱。get
ping
$ docker run -it --rm --name alpine1 --network my-network alpine / # ping alpine2 PING alpine2 (172.19.0.3): 56 data bytes 64 bytes from 172.19.0.3: seq=0 ttl=64 time=0.321 ms 64 bytes from 172.19.0.3: seq=1 ttl=64 time=0.075 ms 64 bytes from 172.19.0.3: seq=2 ttl=64 time=0.133 ms 64 bytes from 172.19.0.3: seq=3 ttl=64 time=0.077 ms $ docker run -it --rm --name alpine2 --network my-network alpine / # ping alpine1 PING alpine1 (172.19.0.2): 56 data bytes 64 bytes from 172.19.0.2: seq=0 ttl=64 time=0.081 ms 64 bytes from 172.19.0.2: seq=1 ttl=64 time=0.273 ms 64 bytes from 172.19.0.2: seq=2 ttl=64 time=0.116 ms