轉自:https://www.freeaihub.com/article/bridge-module-in-docker-network.html
在前兩篇Docker 網絡:host模式,Docker 網絡:container模式中我們已經介紹Docker網絡模型中的host模式與container模式。本節將對Docker網絡模型中的bridge模型,即橋接模式進行理論介紹,再通過案例的實操,讓您更好地去理解docker網絡中的橋接模式。
bridge橋接模式
Docker安裝時會創建一個名為docker0的虛擬網橋。除非我們進行另外的配置,新創建的容器都會自動連接到這個虛擬網橋提供的風格,bridge網絡用於同一主機上的docker容器相互通信,連接到同一個網橋的docker容器可以相互通信。
- docker network ls
bridge 對宿主機來講相當於一個單獨的網卡設備 對於運行在宿主機上的每個容器來說相當於一個交換機,所有容器的虛擬網線的一端都連接到docker0上。
容器通過本地主機進行上網,容器會創建名為veth的虛擬網卡,網卡一端連接到docker0網橋,另一端連接容器,容器就可以通過網橋通過分配的IP地址進行上網。
我們也可以自定義自己的bridge網絡,docker文檔建議使用自定義bridge網絡,
bridge模式實例
導入容器並啟動
- docker load < /share/images/httpd.tar
- docker run -d --name httpd -p 80:80 httpd
驗證
- docker exec -it httpd cat /etc/hosts
創建自定義網絡
創建一個自定義網絡, 可以指定子網、IP地址范圍、網關等網絡配置
- docker network create --driver bridge --subnet 172.22.16.0/24 --gateway 172.22.16.1 mynet2
查看docker網絡,是否創建成功。
- docker network ls
查看自定義網絡的細節
- brctl show
- ifconfig
- docker network inspect mynet2
創建容器bb1,連接到自定義網絡,並進入容器驗證,可以看到該容器的ip地址為172.22.16.2
- docker run --name bb1 -it --network mynet2 busybox:latest
- ifconfig
驗證后我們按Ctrl+P后,再按Ctrl+Q,從bb1容器退回到主機環境而不關閉容器bb1
再創建一個容器bb2,也連接到網絡mynet2中
- docker run --name bb2 --network mynet2 -it busybox:latest
進入容器,訪問bb1容器的ip地址,進行驗證
- ping 172.22.16.2
會得到如下 類似回復
PING 172.22.16.2 (172.22.16.2): 56 data bytes
64 bytes from 172.22.16.2: seq=0 ttl=64 time=0.439 ms
64 bytes from 172.22.16.2: seq=1 ttl=64 time=0.140 ms
64 bytes from 172.22.16.2: seq=2 ttl=64 time=0.129 ms
總結
Docker網絡bridge橋接模式,是創建和運行容器時默認模式。這種模式會為每個容器分配一個獨立的網卡,橋接到默認或指定的bridge上,同一個Bridge下的容器下可以互相通信的。我們也可以創建自定義bridge以滿足個性化的網絡需求。