已发布的服务在Docker群集上无法访问

所以我在docker群上创build了一个服务:

docker create service --name my-service --network my-network -p 8761:8761 --replicas 1 my-image 

这是一个Spring Boot应用程序,当查看创build的docker容器的标准输出时,显示以下行:

 2017-01-19 12:44:48.588 INFO 6 --- [ main] sbcetTomcatEmbeddedServletContainer : Tomcat started on port(s): 8761 (http) 

指示应用程序监听正确的端口。 当运行docker service inspect my-service它也说端口8761是为这项服务发布的。

当我然后尝试问题: curl http://localhost:8761 (在docker群主,现在群中唯一的节点)我跑到超时。 curl到任何其他端口导致立即Connection Refused错误。

Spring Boot应用程序在机器上直接启动时工作正常,日志中没有任何提示,我真的不知道接下来要看哪里…有人在这里提供线索吗?

您应该curl到pipe理器的IP ,因为它是您的容器运行的节点。

你提到你的问题,你在容器中运行curl命令,但我假设你已经做了像eval $("docker-machine env <manager>") ,这将只允许你启动容器经理。 有了这个,你只能select使用的有源docker引擎。

要真正在机器上运行一个命令,你应该ssh进入它 ,然后你可以curl到本地主机:

docker-machine ssh <manager> -- curl localhost:8761