我有两台运行Ubuntu 16.04 LTS的机器,我已经安装了Docker 18.03.1-ce。我在两台主机之间创建了一个主要工作的群体(我可以部署服务并显示它们等)。唯一的问题是我无法通过任何节点的IP连接到已发布的服务端口,如Docker文档中多次所述,除非服务在该特定节点上运行。
换句话说,如果在节点A上部署服务并侦听端口9000,则无法连接到端口9000上的节点B并访问该服务;连接超时。如果我尝试连接到不同的端口,比如端口9001,我会收到“Connection refused”,这意味着入口网络至少在端口9000上监听,我可以用{{1 }}
这两台计算机都位于同一物理网络上,防火墙已被禁用(netstat
表示ufw status
)。
入口网络出现在两个节点上:
Status: inactive
并且nodeA $ docker network ls
NETWORK ID NAME DRIVER SCOPE
345229fb3285 bridge bridge local
09758f66413a docker_gwbridge bridge local
3bf43f750513 host host local
fq3cc4bfawp3 ingress overlay swarm
9dbe769a1420 none null local
kk67tdjc96vo portainer_agent-network overlay swarm
m8fholkq3tmy portal_default overlay swarm
nodeB $ docker network ls
NETWORK ID NAME DRIVER SCOPE
f8a837effb76 bridge bridge local
e4521f7a132a docker_gwbridge bridge local
312d6e547ec5 host host local
fq3cc4bfawp3 ingress overlay swarm
85da22f22522 none null local
kk67tdjc96vo portainer_agent-network overlay swarm
显示我在网络上有三个容器,其中一个docker network inspect fq3
,另外两个是我自己的容器,它显示ingress-endpoint
下的两个节点。
如果服务正在发布端口9000,并且两个节点都在侦听端口9000,为什么我只能连接到节点A上的端口9000(容器正在运行的地方)并且连接在节点B上超时?
如何诊断入口路由无法正常工作的原因?