文章详情页
如何解决docker宿主机无法访问容器中的服务?
问题描述
1、在容器中访问容器中的服务有响应,在宿主机访问容器服务无响应,但是宿主机可以访问到容器nginx服务的欢迎界面,截图如下:
在容器中访问容器中的服务有响应:
curl 172.17.0.2:8080
在宿主机访问容器中的服务无响应:
curl 172.17.0.2:8080
不加端口直接访问,会得到nginx服务的欢迎界面代码:
curl 172.17.0.2
2、由于容器里可以访问该服务,所以服务是启动了的;在宿主机可以访问容器中的nginx欢迎界面,说明宿主机可以访问容器中80端口的服务,问题到底出在什么地方呢?
问题解答
回答1:每个镜像都定义了可对外提供的接口,Nginx镜像只默认提供了80和443端口,你自然无法访问到容器内的8080端口。
只需要在docker create或者docker run创建容器时携带--expose参数,就能把指定的端口开放出来。
--expose Expose a port or a range of ports
回答2:你需要将制定的端口暴露到宿主机上docker run -p 8080:80 你的镜像名称
相关文章:
1. html5 - HTML标签中相对路径的问题2. java - Spring如何在启动时,针对特定的一类bean根据传入的参数创建出不同的实例并且在后续的业务中调用这些实例?3. 微信端电子书翻页效果4. java - 什么叫构建?求解答 ^.^5. javascript - 求助canvas绘制半透明的马赛克?6. python 读取csv文件可以读取但内容错误,但单独用excel打开正常,如何解决?7. javascript - vue.js插件中的全局方法,全局资源和实例方法区别是什么?8. Javascript 比较不同编码的字符串9. javascript - ajax中的 textStatus 报错为 parsererror?10. 浅谈Vue static 静态资源路径 和 style问题
排行榜