docker+ssh+webservice

docker+ssh+webservice

分类:docker

在项目中需要在启动时发布webservice,程序是部署在docker中的tomcat里的,刚开始webservice绑定的IP地址仍然是宿主主机的IP地址,发现系统启动时webserivce总是发布不成功,总是报类似于这个异常:Could not start Jetty server on port 9,000: Cannot assign requested address。很明显是端口绑定失败,百思不得其解,于是整个思路一直围绕端口展开,思维方向也走偏了,总以为是哪里设置不对,,导致docker容器已经提前占据了要要发布的端口(因为在Dockerfile文件中已经EXPOSE这个端口了),就这点东西每天都抽点时间搞,陆陆续续折腾了几天,先后把docker这里相关的知识试了个遍,结果还是毫无进展,到网上也找不到答案。

直到昨晚临睡前,脑子中想了下docker的原理和结构图,忽然间想到docker的本质原理就是“映射”,docker容器的IP地址和端口和宿主主机也是一一映射的,而程序是部署的tocmat运行在docker容器中,所以其中如果运行程序当然不能是宿主主机的IP地址了,而应该站在容器的角度去考虑,绑定的应该是容器主机的地址而不应该关心宿主主机,把具体映射的工作交给docker,而不是直接绑定宿主主机的IP,那么绑定什么地址呢?我想到了当前环境中tomcat中的应用本身是正常的,tomcat可以正常访问,那我就直接模仿tomcat就行了,于是使用docker port命令查了下tomcat,得到的结果是绑定在”0.0.0.0“这个IP上,而这个IP的意思是绑定到本机(本容器)的所有IP,比如127.0.0.1和本身又分配的局域网地址或者公网地址(关于”0,0.0.0"的知识读者可以自己查更多的其他资料),于是赶紧试了下,果然成功了!

问题解决了,有点小高兴,但是也看出自己处理问题过程中的方法和思路问题很大。在遇到问题时,没有冷静一个点一个点顺着流程去分析,而是东拉西扯乱打一气,浪费了很多时间,也对不起给我付薪水的东家啊!其实处理问题时,我也预感到这个一定是个低级问题,果然如此。以后必须这样严格要求自己了,如果遇到这种问题,一定要冷静分析。

版权声明:本文为博主原创文章,未经博主允许不得转载。

上一篇如果在docker中部署tomcat,并且部署java应用程序

顶0踩0

而消极的人则在每个机会都看到某种忧患。

docker+ssh+webservice

相关文章:

你感兴趣的文章:

标签云: