docker從零開始網絡(四 ) host網絡


使用主機網絡

如果host對容器使用網絡驅動程序,則該容器的網絡堆棧不會與Docker主機隔離。例如,如果您運行綁定到端口80 host的容器並使用網絡,則容器的應用程序將在主機IP地址的端口80上可用。

主機網絡驅動程序僅適用於Linux主機,並且不支持Docker for Mac,Docker for Windows或Docker EE for Windows Server。

在Docker 17.06及更高版本中,您還可以host通過傳遞--network hostdocker container create命令將網絡用於群組服務在這種情況下,控制流量(與管理群集和服務相關的流量)仍然通過覆蓋網絡發送,

但各個群集服務容器使用Docker守護程序的主機網絡和端口發送數據。這會產生一些額外的限制。例如,如果服務容器綁定到端口80,則只有一個服務容器可以在給定的swarm節點上運行。

如果您的容器或服務未發布端口,則主機網絡無效。

使用主機網絡進行聯網

本系列教程介紹了直接綁定到Docker主機網絡的網絡獨立容器,沒有網絡隔離。有關其他網絡主題,請參閱概述

目標

本教程的目標是啟動一個nginx的容器直接綁定到Docker主機上的80端口 從網絡的角度來看,這是相同的隔離級別,就好像nginx進程直接在Docker主機上而不是在容器中運行一樣。但是,在所有其他方式(例如存儲,進程命名空間和用戶命名空間)中,nginx進程與主機隔離。

先決條件

  • 此過程要求端口80在Docker主機上可用。要使Nginx偵聽其他端口,請參閱圖像的 文檔nginx

  • host網絡驅動程序僅適用於Linux主機和Windows,或Windows Server泊塢EE不支持多克的Mac,碼頭工人。

程序

  1. 創建並啟動容器作為分離進程。--rm選項意味着一旦退出/停止就移除容器。-d標志表示啟動容器分離(在后台)。

  

[root@docker11 ~]# docker run --rm -d --network host --name my_nginx nginx

 

  1. 通過瀏覽到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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM