首页 > 解决方案 > 在 docker swarm 模式下不暴露端口

问题描述

我正在尝试使用 docker swarm 设置非常简单的服务,但我遇到了暴露端口的问题。

我有两台机器,让它们命名为 xxx 和 yyy。当我做简单的

docker run -d -p 9200:9200 -p 9300:9300 elasticsearch:7.4.0

他们都工作正常,我可以去 xxx:9200 有 Elasticsearch 的实例

我尝试对 swarm 模式做同样的事情,所以在 xxx 机器上我做了:

docker swarm init --advertise-addr [external IP of xxx machine]

我得到了正确的令牌,我成功地将 yyy 机器加入了 swarm。然后我使用创建了新的覆盖网络

docker network create -d overlay dockerdemo

并使用在这个群中创建服务

docker service create --name swarmelasticsearch --network dockerdemo --replicas 2 -p 9200:9200 -p 9300:9300 elasticsearch:7.4.0

服务已成功创建,两台机器都运行着带有 Elasticsearch 的容器,但我无法从外部访问它们。当我转到 xxx:9200 或 yyy:9200 或 port-of-xxx:9200 时,什么也没有发生。我无法访问我的网站。为什么?我还需要做些什么吗?我的两台机器都在带有 Ubuntu + 最新 docker 的 Azure VM 上。

标签: azuredockerdocker-swarm

解决方案


推荐阅读