我对docker swarm有问题。我已经发布了连接到我的群集覆盖网络的容器的端口,但是该端口只能从我的群集的每个主机内部访问。 实际上,我无法从群集外部访问端口
我有4台机器:
和一个容器: -Vault容器,暴露TCP端口4200;在docker-compose文件的配置部分下方
vault:
image: vault:1.3.2
ports:
- "8200"
environment:
VAULT_API_ADDR: http://vault:8200
VAULT_ADDR: http://127.0.0.1:8200
VAULT_LOCAL_CONFIG: >-
{
"disable_mlock":true,
"ui": true,
"backend": {
"file": {
"path": "/vault/file"
}
},
"listener": {
"tcp": {
"address": "0.0.0.0:8200",
"tls_disable": 1
},
},
"default_lease_ttl": "168h",
"max_lease_ttl": "720h"
}
启动堆栈时,泊坞窗创建我的容器和与其关联的覆盖网络。
命令docker stack services返回的结果
ace3iansible@alaska:~$ docker stack services test
ID NAME MODE REPLICAS IMAGE PORTS
rhjg9jc0guyy test_vault replicated 1/1 vault:1.4.2 *:30000->8200/tcp
当我在host1,host2和host3上运行telnet 127.0.0.1 30000时,它返回成功响应,但是当我从host4运行telnet 10.0.0.5 30000时我超时了。
我已经阅读了docker的文档,似乎我的集群只会在公共IP地址上公开该端口。有没有一种方法可以让我的容器的端口暴露在专用IP地址上?