所以我在docker swarm上创建了一个服务:
docker create service --name my-service --network my-network -p 8761:8761 --replicas 1 my-image
它是一个Spring Boot应用程序,当查看创建的docker容器的stdout时,会显示以下行:
2017-01-19 12:44:48.588 INFO 6 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8761 (http)
指示应用程序侦听正确的端口。
运行docker service inspect my-service
时,它还表示已为此服务发布了端口8761。
当我尝试发出问题:curl http://localhost:8761
(在docker swarm master上,现在是swarm中唯一的节点)我遇到了超时问题。卷曲到任何其他端口会立即导致Connection Refused
错误。
Spring Boot应用程序在机器上直接启动时工作正常,日志中没有提示,我真的不知道下一步要去哪里......这里有人知道吗?
答案 0 :(得分:2)
您应该curl
到经理的IP ,因为它是您的容器正在运行的节点。
您在问题中提到您在容器内运行curl
命令,但我假设您已完成eval $("docker-machine env <manager>")
之类的操作,这只会让您在管理器中启动容器。有了这个,您只需选择要使用的活动docker引擎。
要在机器中实际运行一个命令,你应该 ssh到它,然后你可以curl
到localhost:
docker-machine ssh <manager> -- curl localhost:8761