侧边栏壁纸
博主头像
Mystery0

程序员这一行的好处就在于,不用托关系,不用送礼,只要靠自己。不担心丢掉工作,拿的钱还干干净净。

  • 累计撰写 26 篇文章
  • 累计创建 20 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

CentOS 8 Docker 容器无法访问宿主机服务解决

Mystery0
2019-10-13 / 0 评论 / 0 点赞 / 1,083 阅读 / 0 字
温馨提示:
本文最后更新于 2020-02-29,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

现象

Docker 容器启动时会去连接 MariaDB (常见的SpringBoot项目,也就是我自己打包的 Docker 镜像,见前文),但是启动失败,提示:

java.net.NoRouteToHostException: Host is unreachable (Host unreachable)

原因

默认情况下,我们 Docker 容器运行时使用的是 Bridge 模式, Docker 启动时会创建名为 docker0 的虚拟网桥,我们 Docker 容器所访问网络均从这个出口出去,所以我们在配置文件中访问宿主机的服务,不再是访问 127.0.0.1 ,而是 docker0 网桥的ip地址,一般来说都是 172.17.0.1 。 但是, Centos 使用的 firewalld 的防火墙, docker 容器启动时会配置 iptables 用于自动放行来自容器内部的请求。但是偏偏 firewalld 没有,所以就是这么个原因导致 Docker 容器无法访问宿主机的服务。

解决

知道了原因之后,解决方法自然就出来了。

关闭防火墙

直接简单粗暴的执行:

systemctl stop firewalld # 关闭防火墙
systemctl disable firewalld # 关闭防火墙的自动启动

放行端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent # 放行端口
firewall-cmd --reload # 重新加载防火墙配置

参考链接

docker容器无法访问宿主机-No route to host

0

评论区