共計 1251 個字符,預計需要花費 4 分鐘才能閱讀完成。
這篇文章主要介紹 docker 中網絡模式的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
當你安裝完 Docker 時,它會自動創建三個網絡。
docker network ls
結果應如下:
NETWORK ID NAME DRIVER SCOPE
594430d2d4bb bridge bridge local
d855b34c5d51 host host local
b1ecee29ed5e none null local
Docker 內置這三個網絡,運行容器時,你可以使用該來指定容器應連接到哪些網絡。
我們在使用 docker run 創建 Docker 容器時,可以用 –network 標志 選項指定容器的網絡模式,Docker 有以下 4 種網絡模式:
host 模式:使用 –net=host 指定。
none 模式:使用 –net=none 指定。
bridge 模式:使用 –net=bridge 指定,默認設置。
container 模式:使用 –net=container:NAME_or_ID 指定。
host
Docker 使用了 Linux 的 Namespaces 技術來進行資源隔離,如 PID Namespace 隔離進程,Mount Namespace 隔離文件系統,Network Namespace 隔離網絡等。一個 Network Namespace 提供了一份獨立的網絡環境,包括網卡、路由、Iptable 規則等都與其他的 Network Namespace 隔離。
host 模式類似于 Vmware 的橋接模式,與宿主機在同一個網絡中,但沒有獨立 IP 地址。一個 Docker 容器一般會分配一個獨立的 Network Namespace。但如果啟動容器的時候使用 host 模式,那么這個容器將不會獲得一個獨立的 Network Namespace,而是和宿主機共用一個 Network Namespace。容器將不會虛擬出自己的網卡,配置自己的 IP 等,而是使用宿主機的 IP 和端口。
如下圖所示:容器與主機在相同的網絡命名空間下面,使用相同的網絡協議棧,容器可以直接使用主機的所有網絡接口
案例驗證
查看主機鏈路接口
ip a
我們右側云環境主機的 IP 為 {host0.ip}/24 上用 host 模式啟動 nginx 容器,監聽它的 tcp80 端口。
使用 –net host 參數來指定網絡模型使用 host 模式
docker run --name=nginx --net=host -p 80:80 -d nginx
查看容器鏈路接口,與主機一致
docker exec -it nginx cat /etc/hosts
這時外界要訪問容器中的應用,則直接使用 {host0.ip}:80 即可,不用任何 NAT 轉換,就像直接跑在宿主機中一樣。但是,容器的其他方面,如文件系統、進程列表等還是和宿主機隔離的。
curl {host0.ip}
以上是“docker 中網絡模式的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注丸趣 TV 行業資訊頻道!