0

我有一个相当直接的 Docker 堆栈设置。此时我在集群中有一个节点(管理节点)。在这个集群上,我正在运行一个搬运工代理 (portainer_agent) 来监视节点和搬运工 Web 界面 (portainer_portainer)。

我遇到的问题是,当我通过 ssh 进入节点时,我可以在其发布的端口 ( localhost:9000) 上访问 portainer_portainer。但是,当我尝试10.0.0.6:9000从桌面浏览器(而不是集群节点)访问节点外部 IP 地址上的相同端口 () 时,我无法从容器中获取任何数据。我做错了什么吗?我已经包含了我的 docker 检查 portainer_portainer。

Linux 上的 docker 版本

Docker version 19.03.12, build 48a66213fe

portainer_portainer 检查

ID:             j62wg3sgry5326h4gli3apvxe
Name:           portainer_portainer
Labels:
 com.docker.stack.image=portainer/portainer
 com.docker.stack.namespace=portainer
Service Mode:   Replicated
 Replicas:      1
UpdateStatus:
 State:         completed
 Started:       57 seconds ago
 Completed:     44 seconds ago
 Message:       update completed
Placement:
 Constraints:   [node.role == manager]
UpdateConfig:
 Parallelism:   1
 On failure:    pause
 Monitoring Period: 5s
 Max failure ratio: 0
 Update order:      stop-first
RollbackConfig:
 Parallelism:   1
 On failure:    pause
 Monitoring Period: 5s
 Max failure ratio: 0
 Rollback order:    stop-first
ContainerSpec:
 Image:         portainer/portainer:latest@sha256:f8c2b0a9ca640edf508a8a0830cf1963a1e0d2fd9936a64104b3f658e120b868
 Args:          -H tcp://tasks.agent:9001 
Mounts:
 Target:        /data
  Source:       /mnt/portainer/data
  ReadOnly:     false
  Type:         bind
Resources:
Networks: portainer_agent_network 
Endpoint Mode:  vip
Ports:
 PublishedPort = 8000
  Protocol = tcp
  TargetPort = 8000
  PublishMode = ingress
 PublishedPort = 9000
  Protocol = tcp
  TargetPort = 8000
  PublishMode = ingress

编辑:经进一步检查。容器实际上是可以到达的。但是,它们只有在连接到我的防火墙上的 VPN 服务时才能访问。这告诉我该服务正在正确发布,但它们在我的本地网络中仍然不可用(这将是我继续使用 docker 的关键)。

4

1 回答 1

2

因此,经过一番挖掘,我似乎没有很好地说明我的问题。我的家庭网络在10.0.0.0/24子网上,因为它是默认的 docker 入口网络。我按照关于替换默认入口网络的官方 docker 教程重建了我的 docker swarm,并且已经完成了。我使用的命令如下:

docker network rm ingress
docker network create --driver overlay --ingress --subnet=10.0.1.0/24 --gateway=10.0.1.2 ingress

完成所有这些后,我重新初始化了我的 docker 服务。一切都出现了,并且在我的网络上可用。

于 2020-10-06T22:36:55.537 回答