大家都知道,两个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这个端口暴露给宿主机:

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

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

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

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

 [root@localhost ~]# docker run -it -p : test01/wbserv /bin/bash
[root@168081c42f91 /]# sh /opt/apache-tomcat-7.0./bin/startup.sh
Using CATALINA_BASE: /opt/apache-tomcat-7.0.
Using CATALINA_HOME: /opt/apache-tomcat-7.0.
Using CATALINA_TMPDIR: /opt/apache-tomcat-7.0./temp
Using JRE_HOME: /usr/java/jdk1..0_79/jre
Using CLASSPATH: /opt/apache-tomcat-7.0./bin/bootstrap.jar:/opt/apache-tomcat-7.0./bin/tomcat-juli.jar
Tomcat started.
[root@168081c42f91 /]#

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

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

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

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

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

--link mysql_name:tomysql

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

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

重启应用,问题解决。

两个docker容器互连时,提示no route to host错误的问题的更多相关文章

  1. Docker容器启动时初始化Mysql数据库

    1. 前言 Docker在开发中使用的越来越多了,最近搞了一个Spring Boot应用,为了方便部署将Mysql也放在Docker中运行.那么怎么初始化 SQL脚本以及数据呢? 我这里有两个传统方案 ...

  2. 解决Docker运行命令时提示"Got permission denied while trying to connect to the Docker daemon socket"类情况

    Docker安装命令: 解决Docker运行命令时提示"Got permission denied while trying to connect to the Docker daemon ...

  3. 利用Openvswitch实现不同物理机中的Docker容器互连

    1. 测试环境 75机(10.11.150.75):Red Hat Enterprise Linux Server 7.0,无外网访问权限,已安装Docker Server 74机(10.11.150 ...

  4. docker容器互连

    三种方式 1.使用容器连接的示例如下: $ docker run --name some-app --link itbilu-mysql:mysql -d application-that-uses- ...

  5. Loadrunner12.5-录制http://www.gw.com.cn/网页时提示“SSL身份验证失败”错误,这是为什么呢?

    问题:LR产品,录制http://www.gw.com.cn/ 网页时提示下图错误,这是为什么呢? 请在如下recording options中选择正确的SSL版本,再进行录制. 注:如何确定那个SS ...

  6. docker容器启动时执行脚本 run /bin/bash执行多条指令

    搜了很多资料发现并未解决,以下方法失败!求大神评论给出完美方案 1.首先需要编写需要启动的脚本,并将脚本放在 /etc/init.d/目录下 如:cs.sh 2.修改权限 3.chkconfig -- ...

  7. 快速解决docker生成镜像时提示Could not resolve ‘archive.ubuntu.com’问题

    今天在其中一台Linux 中使用Docker命令创建镜像时失败,报错提示: Temporary failure resolving ‘archive.ubuntu.com’ 典型的DNS解析问题,尝试 ...

  8. 不同network中的两个docker容器

    1. 创建docker网络 docker network create --subnet 172.18.0.1/16 test docker network ls 2. 创建两个容器指定docker ...

  9. docker 容器启动时设置环境变量source

    镜像启动时,自动执行的是~/.bashrc文件,所以,环境变量需要配置在该文件内,这样镜像启动时,可自动执行该文件,使环境变量生效. vi  ~/.bashrc ------------------- ...

随机推荐

  1. 【转载】Nginx+Tomcat 动静分离实现负载均衡

    0.前期准备 使用Debian环境.安装Nginx(默认安装),一个web项目,安装tomcat(默认安装)等. 1.一份Nginx.conf配置文件 1 # 定义Nginx运行的用户 和 用户组 如 ...

  2. Netty接收到一个请求但是代码段执行了两次

    这是因为HttpRequestDecoder把请求拆分成HttpRequest和HttpContent两部分, 所以在建立连接的时候建立了两次.

  3. Java虚拟机 - 类加载机制

    [深入Java虚拟机]之四:类加载机制 类加载过程     类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载.验证.准备.解析.初始化.使用和卸载七个阶段.它们开始的顺序如下 ...

  4. Spring全家桶系列–SpringBoot与Mybatis结合

    //本文作者:cuifuan Mybatis 是一个持久层ORM框架,负责Java与数据库数据交互,也可以简易理解为中介,相对于它,还有个中介是hibernate,不过在mybatis中sql语句的灵 ...

  5. 查找具有特定属性的元素 (XPath-LINQ to XML)

    XElement doc = XElement.Parse( @"<Root> <Child1>1</Child1> <Child2 Select= ...

  6. django-分页paginator

    分页 Django提供了一些类来帮助你管理分页的数据 -- 也就是说,数据被分在不同页面中,并带有“上一页/下一页”标签.这些类位于 django/core/paginator.py 中. 示例 向 ...

  7. 微信小程序获取当前地址以及选择地址详解 地点标记

    首先定义事件: bindtap='getLocation' <view class='store-bot' bindtap='getLocation'> <view class='c ...

  8. python中matplotlib.pyplot中cm的属性

    https://matplotlib.org/gallery/color/colormap_reference.html

  9. Microsoft MVP MSDN Magazine 最新期分享

    下载地址:http://1105insight.com/portal/wts/uemcmQeeDyaq%5Ev2gAe6c3b0Djd 可在线或下载查看

  10. json 平面转树状 child [zhuan]

    <script> /** * json格式转树状结构 * @param {json} json数据 * @param {String} id的字符串 * @param {String} 父 ...