本人在mac上,用docker stack部署了一套起名为pdf2txt的服务,服务启动正常:
但是在使用时,mac本地调用该服务却一直没反应,中间一直没报错,最后直到超时报了个超时的错误。很纳闷。。。然后就到该容器内部去使用同样的请求测试,发现容器内部服务正常。
上面这种问题,很大一部分是因为端口暴露存在问题。但是上图也显示,端口成功暴露出来了。
之后,仔细查看上图的服务列表,发现最上面的一个叫做data_receiver的服务也启动的有同样的pdf2txt容器,这么说,很有可能是因为同样的容器,占用同样的端口,导致后面启动的容器端口被占用,不能正常访问。
然后使用
docker stack rm data_receiver
关闭data_receiver服务
重新部署pdf2txt服务
测试上述想法,果然。。。是这个原因
所以,以后再遇到这种问题,建议注意端口是否冲突。除了部署同一个镜像会导致端口冲突,再部署不同的服务时,也有可能因为人为习惯的因素,导致端口冲突。