坑一:安装好docker,在docker容器上部署好mysql,redis及业务服务后,业务服务死活连不上mysql服务。报如下错误:
com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
远程机器能够访问,通过navicat也能够访问,但是docker上服务死活访问不了,百思不得其解,网上搜索半天,没有找到一样的错误,最后想可能是本地防火墙的问题,于是关闭本地防火墙,果然问题得到解决。但还是没能明白具体其中的原委。
CentOS 7.0默认使用的是firewall作为防火墙
查看防火墙状态
firewall-cmd --state
- 停止firewall
systemctl stop firewalld.service
- 禁止firewall开机启动
systemctl disable firewalld.service
坑二:关闭防火墙后,发现部署服务报错:
docker: Error response from daemon: driver failed programming external connectivity on endpoint
docker: Error response from daemon: driver failed programming external connectivity on endpoint mysql...... iptables: No chain/target/match by that name.
看错误来判断应该是端口映射或者网络出现了问题,端口映射问题几率较大!
所以我尝试重启了一下 docker 并重启容器,执行:
systemctl restart docker
结果成功!