【发布时间】:2016-12-08 16:15:15
【问题描述】:
我正在尝试研究如何在 Docker 中正确使用 swarm 模式。首先,我尝试在我的 2 台工作人员和经理机器上运行容器,而不指定自定义网络(所以我使用默认的入口覆盖网络)。但是,如果我使用入口网络,由于某种原因我无法解析tasks.myservice。
所以我尝试像这样配置自定义网络:
docker network create -d overlay elasticnet
所以现在,当我 bash 进入其中一个容器时,我可以成功解析 tasks.myservice,但我无法再从外部访问我在 --publish 下的服务创建中定义的端口(我可以在我使用了入口网络)。
有没有办法:
使用入口网络并能够解析
tasks.myservice或任何其他将指向我所有服务容器的 DNS 记录?或者,使用自定义网络,但
--publish端口正确,以便我可以从外部访问它们?
编辑
这就是我创建服务的方式,
没有自定义网络:
docker service create --replicas 3 --label elasticsearch --endpoint-mode vip --name elastic -e ES_HOSTS="tasks.elastic" --publish 9200:9200 --mount type=bind,source=/tmp/es,destination=/usr/share/elasticsearch/config --update-delay 10s es:latest
使用自定义网络:
docker service create --replicas 3 --network elasticnet --label elasticsearch --endpoint-mode vip --name elastic -e ES_HOSTS="tasks.elastic" --publish 9200:9200 --mount type=bind,source=/tmp/es,destination=/usr/share/elasticsearch/config --update-delay 10s es:latest
【问题讨论】:
-
你能发布一份你正在运行的所有命令的列表吗?用户定义的覆盖网络是要走的路。
-
@johnharris85 请看我的编辑。
标签: docker docker-swarm docker-networking