两个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这个端口暴露给宿主机:
[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错误的问题的更多相关文章
- Docker容器启动时初始化Mysql数据库
1. 前言 Docker在开发中使用的越来越多了,最近搞了一个Spring Boot应用,为了方便部署将Mysql也放在Docker中运行.那么怎么初始化 SQL脚本以及数据呢? 我这里有两个传统方案 ...
- 解决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 ...
- 利用Openvswitch实现不同物理机中的Docker容器互连
1. 测试环境 75机(10.11.150.75):Red Hat Enterprise Linux Server 7.0,无外网访问权限,已安装Docker Server 74机(10.11.150 ...
- docker容器互连
三种方式 1.使用容器连接的示例如下: $ docker run --name some-app --link itbilu-mysql:mysql -d application-that-uses- ...
- Loadrunner12.5-录制http://www.gw.com.cn/网页时提示“SSL身份验证失败”错误,这是为什么呢?
问题:LR产品,录制http://www.gw.com.cn/ 网页时提示下图错误,这是为什么呢? 请在如下recording options中选择正确的SSL版本,再进行录制. 注:如何确定那个SS ...
- docker容器启动时执行脚本 run /bin/bash执行多条指令
搜了很多资料发现并未解决,以下方法失败!求大神评论给出完美方案 1.首先需要编写需要启动的脚本,并将脚本放在 /etc/init.d/目录下 如:cs.sh 2.修改权限 3.chkconfig -- ...
- 快速解决docker生成镜像时提示Could not resolve ‘archive.ubuntu.com’问题
今天在其中一台Linux 中使用Docker命令创建镜像时失败,报错提示: Temporary failure resolving ‘archive.ubuntu.com’ 典型的DNS解析问题,尝试 ...
- 不同network中的两个docker容器
1. 创建docker网络 docker network create --subnet 172.18.0.1/16 test docker network ls 2. 创建两个容器指定docker ...
- docker 容器启动时设置环境变量source
镜像启动时,自动执行的是~/.bashrc文件,所以,环境变量需要配置在该文件内,这样镜像启动时,可自动执行该文件,使环境变量生效. vi ~/.bashrc ------------------- ...
随机推荐
- C#微信小程序服务端获取用户解密信息
using AIOWeb.Models; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.C ...
- IDEA@Data注释使用
@Data注解主要是帮助解决Setter 和 Getter以及 toString这种重复的无脑工作 加入@Data注解可以直接帮助我们添加实体类相应的Setter 和 Getter以及 toStrin ...
- 啰里吧嗦CountDownLatch
java.util.concurrent Class CountDownLatch 目录 CountDownLatch 是什么 CountDownLatch是一个同步工具类,它允许一个或多个线程一直等 ...
- Java虚拟机 - 结构原理与运行时数据区域
http://liuwangshu.cn/java/jvm/1-runtime-data-area.html 前言 本来计划要写Android内存优化的,觉得有必要在此之前介绍一下Java虚拟机的相关 ...
- SpringMVC拦截器实现:当用户访问网站资源时,监听session是否过期
SpringMVC拦截器实现:当用户访问网站资源时,监听session是否过期 一.拦截器配置 <mvc:interceptors> <mvc:interceptor> < ...
- NIO学习笔记七:Pipe
Java NIO 管道是2个线程之间的单向数据连接.Pipe有一个source通道和一个sink通道.数据会被写到sink通道,从source通道读取. 这里是Pipe原理的图示: 示例代码 Pipe ...
- 【读书笔记】iOS-定位服务与地图应用开发
一,定位服务. iOS设备能提供3种不同的定位途径: 1,WiFi定位,通过查询一个WiFi路由器的地理位置的信息,比较省电:iPhone,Ipod touch 和iPad都可以. 2,蜂窝式移动电话 ...
- 大数据【六】ZooKeeper部署
这是一个分布式服务框架,阿帕奇的一个子项目.关于ZooKeeper我只简单的部署一下,以便后面的HBase. 一 概述 ZooKeeper 分布式服务框架是 Apache Hadoop 的一个子项目 ...
- unityShader CGINCLUDE关键字
unityshader中经常见到CGPROGRAM,除此之外还有一个CGINCLUDE关键字. 二个关键字都是用ENDCG来结束,但是用法完全不一样. CGINCLUDE和ENDCG内可以插入一些sh ...
- CSS| 實例---寬度自由調節button,圖片切換
<html lang="en"> <head> <meta charset="utf-8"/> <title>I ...