使用主機網絡
如果host對容器使用網絡驅動程序,則該容器的網絡堆棧不會與Docker主機隔離。例如,如果您運行綁定到端口80 host的容器並使用網絡,則容器的應用程序將在主機IP地址的端口80上可用。
主機網絡驅動程序僅適用於Linux主機,並且不支持Docker for Mac,Docker for Windows或Docker EE for Windows Server。
在Docker 17.06及更高版本中,您還可以host通過傳遞--network host給docker container create命令將網絡用於群組服務。在這種情況下,控制流量(與管理群集和服務相關的流量)仍然通過覆蓋網絡發送,
但各個群集服務容器使用Docker守護程序的主機網絡和端口發送數據。這會產生一些額外的限制。例如,如果服務容器綁定到端口80,則只有一個服務容器可以在給定的swarm節點上運行。
如果您的容器或服務未發布端口,則主機網絡無效。
使用主機網絡進行聯網
本系列教程介紹了直接綁定到Docker主機網絡的網絡獨立容器,沒有網絡隔離。有關其他網絡主題,請參閱概述。
目標
本教程的目標是啟動一個nginx的容器直接綁定到Docker主機上的80端口 。從網絡的角度來看,這是相同的隔離級別,就好像nginx進程直接在Docker主機上而不是在容器中運行一樣。但是,在所有其他方式(例如存儲,進程命名空間和用戶命名空間)中,nginx進程與主機隔離。
先決條件
-
在
host網絡驅動程序僅適用於Linux主機和Windows,或Windows Server泊塢EE不支持多克的Mac,碼頭工人。
程序
-
創建並啟動容器作為分離進程。該
--rm選項意味着一旦退出/停止就移除容器。該-d標志表示啟動容器分離(在后台)。
[root@docker11 ~]# docker run --rm -d --network host --name my_nginx nginx
- 通過瀏覽到http:// localhost:80 /來訪問Nginx 。 因為docker容器與主機網絡是共享的,所以可以直接用宿主機的ip加80端口直接訪問。

3.使用以下命令檢查網絡堆棧:
-
檢查所有網絡接口並驗證是否未創建新接口。
ip addr show
使用該netstat命令驗證哪個進程綁定到端口80 。您需要使用,sudo因為該進程由Docker守護程序用戶擁有,否則您將無法看到其名稱或PID。

4.停止容器。它將在使用該--rm選項啟動時自動刪除。
[root@docker11 ~]# docker stop my_nginx
my_nginx
