• docker容器运行成功但无法访问,原因分析及对应解决方案(最新,以Tomcat为例,亲测有效)


    原因分析:

    1.     是否能访问当运行docker容器虚拟机(主机)地址
    2.     虚拟机对应的端口号是否开启或者防墙是否关闭
    3.     端口映射是否正确(这个是我遇到的)
    4.     tomcat下载的是最新版,docker运行后里面是没有东西的,会报404

    一般都是这几个原因导致的明明docker容器运行成功了,但确无法正常访问

    案例复现(以第三的原因为例):

    首先,我在docker容器上运行一个tomcat容器

    docker run  --name tomcat1 -p 8088:8088 -d 108db0e7c85e
     

    查看容器是否运行成功:docker ps

    在浏览器中输入地址访问tomcat,发现失败

    出现这种无法访问的一般就是端口映射出现了问题了,如果报404则代表端口为问题,但里面没有数据

    出现上面这种问题,有二中解决方法,一种是重新运行一个容器,另一种是进入docker容器中,改tomcat的端口号。

    --name   容器名(可以自定义)   -p  主机ip:映射ip  -d  镜像名/镜像id

    1 重新运行一个容器:docker run  --name tomcat2 -p 8089:8080 -d 108db0e7c85e

    2  进入那个不能访问的容器里面,修改tomcat端口号

            进入tomcat1容器内部: docker exec -it tomcat1 bash

    这里操作难度会比较大,因为docker容器中无法使用vi和vim等文本编辑器,需要你自己下载

    解决方法:

    针对问题1:要实现确保你可以ping虚拟机的IP

    针对问题2,查看虚拟机端口是否开发,不开放,则开放对应端口,或者直接禁用防火墙

    针对问题3:要注意端口映射,主机端口可以自己定义,但容器映射的端口必须与应用的配置端口一样,列如nginx默认80,tomcat默认8080,如果已经运行了,不想删除容器,则可以进入容器内

    修改应用端口号

    针对问题4:最新版的tomcat是可以使用的,但是就是webapps中默认是没有内容的

  • 相关阅读:
    计算机网络网络层
    R数据分析:网络分析的做法,原理和复现方法
    详解 Java 17 中新推出的密封类
    抖音矩阵系统。抖音矩阵系统,抖音矩阵系统源码。
    C语言_用于ADC数据的均值滤波算法
    数字电路和模拟电路-4基本逻辑门电路
    Maven详解
    如何在oracle中查询所有用户表的表名、主键名称、索引、外键等
    网络安全实战:剖析ThinkPHP 5.1.X反序列化漏洞
    Java 8新特性
  • 原文地址:https://blog.csdn.net/weixin_45533131/article/details/132592570