zoukankan      html  css  js  c++  java
  • 两个docker容器互连时,提示no route to host错误的问题

    大家都知道,两个docker container互连的时候可以用link,但是,我们也知道,container可以将自己的端口映射到宿主机上,比如一个container A上的tomcat将端口暴露给宿主机(0.0.0.0:58080->8080),另一个container B上的mysql将端口也暴露给宿主机(0.0.0.0:53306->3306),那么问题来了,是否可以将A上的jdbc连接改成jdbc:mysql://192.168.1.10:53306xxxxxx(假设192.168.1.10是宿主机的ip),猛然一看似乎可以,没有防火墙,端口又做了映射,应该是可以连通的,但实际上,在tomcat上,我遇到了no route to host的error,具体实验如下:

    首先我们启动一个mysql的容器,将3306这个端口暴露给宿主机:

    1 [root@localhost ~]# docker run -d -p 53306:3306 -e MYSQL_ROOT_PASSWORD=123456 test01/mariadb
    2 2c564a3484a4424b18e413fb11c6a71d76098f7e2e30b3ea8ad4e1b987e249a8
    3 [root@localhost ~]# docker ps 
    4 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
    5 2c564a3484a4        test01/mariadb      "docker-entrypoint.sh"   45 seconds ago      Up 43 seconds       0.0.0.0:53306->3306/tcp   berserk_cray
    6 [root@localhost ~]# 

    这个时候我们用客户端来访问一下,测试53306这个端口是否能连接到我们的数据库:

    连接成功了,说明端口映射是成功的,从外部访问宿主机的53306端口能正常的映射到容器上的3306端口。

    好的,接下来,再启动一个tomcat的容器,将应用的jdbc连接指向宿主机的53306端口,来看看是否可以连通呢。

    1 [root@localhost ~]# docker run -it -p 52080:8080 test01/wbserv /bin/bash
    2 [root@168081c42f91 /]# sh /opt/apache-tomcat-7.0.70/bin/startup.sh 
    3 Using CATALINA_BASE:   /opt/apache-tomcat-7.0.70
    4 Using CATALINA_HOME:   /opt/apache-tomcat-7.0.70
    5 Using CATALINA_TMPDIR: /opt/apache-tomcat-7.0.70/temp
    6 Using JRE_HOME:        /usr/java/jdk1.7.0_79/jre
    7 Using CLASSPATH:       /opt/apache-tomcat-7.0.70/bin/bootstrap.jar:/opt/apache-tomcat-7.0.70/bin/tomcat-juli.jar
    8 Tomcat started.
    9 [root@168081c42f91 /]#

    这个时候tomcat也起来了,接下来是配置应用和开启应用:(注意IP和端口号,都用宿主机的ip和端口)

     

    好了,接下来,启动应用,可以发现应用起不来,然后查看下启动日志:

    [root@168081c42f91 /]# tail -n 100 logs/catalina.out

    提示开头说的这个错误,No route to host。

    这个问题,估计可以通过修改hosts文件来解决,但是我没有这有这样做,有想去的朋友可以去尝试,最后考虑到日后会有大规模部署的需要,此处改成link连接,如:

    --link mysql_name:tomysql

    只需要将原来的jdbc连接改为

    jdbc:mysql://tomysql:3306/drools?characterEncoding=utf-8

    重启应用,问题解决。

  • 相关阅读:
    笔记
    软件工程第二次作业
    现代软件工程 第一周作业
    2019春季学期期末总结
    2019第十四周作业
    2019第十二周左右
    2019第十一周作业
    2019第十周作业
    2019第九周作业
    2019第八周作业
  • 原文地址:https://www.cnblogs.com/performancetest/p/5716595.html
Copyright © 2011-2022 走看看