我有一个相当直接的 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 的关键)。