docker network 使用

Docker 有如下網絡類型 官方文檔

  • bridge 多用於獨立 container 之間的通訊
  • host 直接使用宿主機的網絡,端口也使用宿主機的。
  • overlay 當有多個 docker 主機時,跨主機的 container 通訊
  • macvlan 每一個 container 都有一個虛擬的 mac 地址
  • none 禁用網絡

默認網絡

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

  • 端口不會自行發佈,必須使用-p參數才能爲外界訪問,而使用自建的bridge網絡時,container的端口可直接被相同網絡下的其餘container訪問。
  • container之間的若是須要經過名字訪問,須要--link參數,而若是使用自建的bridge網絡,container之間能夠經過名字互訪。
  • 更多用戶自定義 bridge 與默認 bridge 網絡區別請查看官方文檔

查看網絡詳情

docker network inspect bridge

自建 bridge 網絡

場景: 當多個獨立的 container 之間須要彼此訪問時,推薦使用自建的 bridge 網絡,而不是使用 --link文檔

建立以下:

$ docker network create --driver bridge my-network
30b752110d07e30d8facb6448e76033aa430b519a8b14ce1ffd34e65054547d3

啓動若干 container 並加入 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

container 之間相互 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

關於更多 docker network 使用方式請查看官方文檔it

相關文章
相關標籤/搜索