Docker容器间基于Link单向通信

问题场景

Tomcat容器需要与Mysql容器通信,Tomcat需要向Mysql发送网络包读取数据,一般情况Mysql不需要主动向Tomcat发起请求,这种情况就是单项通信。
一般情况下采用docker inspect 容器id查看IPAddress然后两个容器间互相Ping IP地址是可以Ping通的,因为启动采用是默认的桥接方式。
但这种直接调用IP地址的情况存在局限性,比如:有一天一个容器死掉了,需要重新run一次镜像起一个新的容器,Docer可能会重新为其中一个容器分配IP地址,那么需要到所有对应的容器中修改配置文件中这个地址,在容器量很大的情况下,这就造成维护困难。

启动Mysql容器

docker run --name datasongmysql -e MYSQL_ROOT_PASSWORD=iscas123 -d mysql:5.7

启动tomcat应用容器并link到mysql数据库:

docker run -itd --name tomcat1 --link datasongmysql tomcat:latest

注意:链接到的容器(datasongmysql)一定要存在!

进入容器Ping 容器名

docker exec -it 容器ID /bin/bash
ping datasongsql

不管容器如何变化,Link链接只认容器名,新建的容器名只要修改容器名为Link设置的容器名,就依然可以保持通信。
Link的原理是对当前容器的Host文件做了一个解析。

Tip:

官方版的mysql 5.7 需要安装工具才有ping命令:

apt-get update && apt-get install iputils-ping
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值