无法将连接到覆盖网络的容器的端口暴露给私有IP地址

时间:2020-06-16 17:37:55

标签: docker-swarm swarm docker-stack

我对docker swarm有问题。我已经发布了连接到我的群集覆盖网络的容器的端口,但是该端口只能从我的群集的每个主机内部访问。 实际上,我无法从群集外部访问端口

我有4台机器:

  • 主机1:10.0.0.5群成员
  • 主机2:swarm的10.0.0.6成员
  • 主机3:群成员10.0.0.7
  • 主机4:10.0.0.1不是swarm成员

和一个容器: -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地址上?

0 个答案:

没有答案