一直有個疑問,sonic系統中容器怎麼跟主機或者其他容器裡的應用去通訊互動。
在sonic官網上找到一點介紹,感覺這塊還是很重要的,為啥介紹的篇幅那麼少。
該文件描述了用於在容器內執行的應用程式以安全地請求主機os執行操作(「動作」)的方式(框架)。該框架的組成部分是:
主機服務元件(在主機作業系統上執行),
translib api元件(執行的是容器)
該框架旨在供sonic管理和遙測容器使用,但也可以擴充套件為其他應用程式容器。
sonic管理框架和遙測(應用程式)容器必須能夠向主機發出請求,並從主機獲得對那些請求的響應。
需要訪問主機的各個應用程式必須能夠建立主機模組並輕鬆發出請求並從主機獲取響應。
主機通訊api應在translib中可用,並應提供同步和非同步通訊方法。
應該可以配置有權訪問d-bus套接字的linux使用者帳戶的身份。
應當以僅某些容器(例如sonic mgmt。)可以訪問d-bus插座的方式配置容器。
此功能使管理應用程式可以向主機發出請求以執行「操作」。例如 :
該功能擴充套件了sonic管理框架,以在主機上新增d-bus服務。該服務將在已知的終結點計算機上註冊,並將服務請求到終結點計算機。應用程式模組會將「 servlet」新增到主機服務,該服務將自動註冊其端點(d-bus物件和方法)。
容器中的客戶端應用程式模組(例如管理或遙測)可以使用translib中提供的api將請求傳送到主機-本質上,進行(遠端)d-bus方法呼叫,或者等待響應(如果請求是同步的),或接收乙個通道並等待該請求在通道上返回響應(非同步請求)。
下圖說明了sonic環境中d-bus主機服務的體系結構:
注意。 linux d-bus實現使用unix域套接字進行客戶端到d-bus服務的通訊。所有使用d-bus服務的容器都將繫結安裝(-v / var / run / dbus:/ var / run / dbus:rw)建立d-bus服務套接字的主機目錄。這樣可以確保只有所需的容器才能訪問d-bus主機服務。
d-bus在客戶端(sonic管理容器)和服務(本機主機os)之間提供了可靠的通訊通道-所有動作均得到確認,並可以提供返回值。應當指出,確認對於諸如「映像公升級」或「配置儲存」之類的操作很重要。此外,d-bus方法可以返回許多態別的值,而不僅僅是ack。例如,它們可以返回字串,這對於返回命令的輸出很有用。
Docker容器跨主機通訊
兩台主機上的docker容器直接通過ip位址進行通訊 各項配置如下 docker version 1.13.1 ip資訊根據個人需求部署 主機1的ip位址為 192.168.1.128 主機2的ip位址為 192.168.1.129 為主機1上的docker容器分配的子網 172.17.1.0 24...
docker跨主機容器通訊
docker 網路模式詳解 路由器位址192.168.1.1用route n檢視 parent enp7s0的乙太網名用ifcofig查詢 apt install net tools iputils ping ydocker network create driver macvlan subnet ...
Docker容器跨主機通訊
預設情況下docker容器需要跨主機通訊兩個主機節點都需要在同乙個網段下,這時只要兩個docker容器的宿主機能相互通訊並且該容器使用net網路模式,改實現方式為網橋模式通訊 除此之外我們還可以通過使用第三方工具為不同主機間建立乙個覆蓋網路,使之能夠跨節點通訊,這裡將使用flanneld實現 建立 ...