您好,登錄后才能下訂單哦!
這篇文章主要介紹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 指定。
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中網絡模式的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。