您好,登錄后才能下訂單哦!
本篇內容介紹了“docker容器怎么連接公共網絡”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
默認情況下,容器可以建立到外部網絡的連接,但是外部網絡無法連接到容器。docker 允許通過外部訪問容器或容器互聯的方式來提供網絡服務。
外部訪問容器:容器中可以運行一些網絡應用,要讓外部也可以訪問這些應用,可以通過 -P 或 -p 參數來指定端口映射。
要實現網絡通信,機器需要至少一個網絡接口(物理接口或虛擬接口)來收發數據包;此外,如果不同子網之間要進行通信,需要路由機制。
Docker 中的網絡接口默認都是虛擬的接口。虛擬接口的優勢之一是轉發效率較高。Linux 通過在內核中進行數據復制來實現虛擬接口之間的數據轉發,發送接口的發送緩存中的數據包被直接復制到接收接口的接收緩存中。對于本地系統和容器內系統看來就像是一個正常的以太網卡,只是它不需要真正同外部網絡設備通信,速度要快很多。
Docker 容器網絡就利用了這項技術。它在本地主機和容器內分別創建一個虛擬接口,并讓它們彼此連通(這樣的一對接口叫做 veth pair)。
創建網絡參數
Docker 創建一個容器的時候,會執行如下操作:
創建一對虛擬接口,分別放到本地主機和新容器中;
本地主機一端橋接到默認的 docker0 或指定網橋上,并具有一個唯一的名字,如 veth75f9;
容器一端放到新容器中,并修改名字作為 eth0,這個接口只在容器的名字空間可見;
從網橋可用地址段中獲取一個空閑地址分配給容器的 eth0,并配置默認路由到橋接網卡 veth75f9。
完成這些之后,容器就可以使用 eth0 虛擬網卡來連接其他容器和其他網絡。
可以在 docker run 的時候通過 –net 參數來指定容器的網絡配置,有4個可選值:
–net=bridge 這個是默認值,連接到默認的網橋。
–net=host 告訴 Docker 不要將容器網絡放到隔離的名字空間中,即不要容器化容器內的網絡。此時容器使用本地主機的網絡,它擁有完全的本地主機接口訪問權限。容器進程可以跟主機其它 root 進程一樣可以打開低范圍的端口,可以訪問本地網絡服務比如 D-bus,還可以讓容器做一些影響整個服務器系統的事情,比如重啟。
–net=container:NAME_or_ID 讓 Docker 將新建容器的進程放到一個已存在容器的網絡棧中,新容器進程有自己的文件系統、進程列表和資源限制,但會和已存在的容器共享 IP 地址和端口等網絡資源,兩者進程可以直接通過 lo 環回接口通信。
–net=none 讓 Docker 將新容器放到隔離的網絡棧中,但是不進行網絡配置。之后,用戶可以自己進行配置。
“docker容器怎么連接公共網絡”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。