簡體   English   中英

Docker Swarm中的容器無法相互通信

[英]Containers in Docker Swarm unable to communicate with each other

我有三個具有以下規格的不同節點:

  • 節點A + B:基於此映像的 Ubuntu 16.04 + Docker 18.03.0-ce。
  • 節點C:CoreOS穩定版+ Docker 17.12.0-ce

所有人都加入了隊伍,主持人A為管理者。 節點C是由不同的供應商在地理上不同的服務器位置托管但這不應該的問題,因為我只使用公共IP地址之類的東西--advertise-addr

我已確保群通信所需的所有端口在所有節點上均打開。 據說容器間的通信特別需要端口7946 使用netcat,我能夠在所有三個節點之間以及從每個節點內的測試容器到另一個節點之間發送和接收TCP和UDP數據包。

任何節點上檢查網絡都會顯示相同的結果:列出了所有三個節點。 因此,Docker Swarm似乎知道其在任何節點上的同位體。

現在這是問題所在:

  • 節點A + B上托管的容器可以通過覆蓋網絡相互訪問,而不會出現任何問題
  • A + C或B + C上托管的容器無法通信。 連接只是超時。

我找不到操作系統和docker版本以外的節點之間的任何明顯區別。 在查看Ubuntu服務器的鏈接映像時,我看到安裝了諸如pipework類的幾種工具,但是我沒有配置或使用它。 還是Docker Swarm隱式使用它?

我真的被困在這里。 很抱歉,如果這個問題不完整,我根本不知道從哪里開始分析問題。 如果我要對此問題進行進一步的修改,請隨時發表評論。

檢查您的防火牆設置。 他們往往會破壞docker“網絡”套件。

確保網絡接口docker0可以到達入站和出站流量的網絡。

一段時間后,我找到了原因:“無法訪問的”服務器(即使它能夠加入群集)使用了虛擬網絡適配器驅動程序e1000 將其更改為virtio ,所有內容都可以發揮魅力。

我希望這可能對遇到相同問題的任何人有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM