<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[Heck's  Blog]]></title> 
<link>https://www.heckjj.com/index.php</link> 
<description><![CDATA[一瞬间的决定，往往可以改变很多，事实上，让自己成功的往往不是知识，是精神！ 如果你总是为自己找借口，那只好让成功推迟。执行力，今天！]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[Heck's  Blog]]></copyright>
<item>
<link>https://www.heckjj.com/post//</link>
<title><![CDATA[docker容器无法访问宿主机报出 No route to host]]></title> 
<author>Heck &lt;@hecks.tk&gt;</author>
<category><![CDATA[运维管理]]></category>
<pubDate>Mon, 05 Sep 2022 06:35:07 +0000</pubDate> 
<guid>https://www.heckjj.com/post//</guid> 
<description>
<![CDATA[ 
	一. 问题描述<br/>  在docker部署nacos的时候遇到了这个样子的问题No route to host 导致了nacos容器无法连接宿主机的docker数据库。<br/>  然后我就进入到了nacos容器里面，ping了宿主机的地址，结果是通着的，然后使用telnet测试了3306端口，结果也会报出这个异常。<br/>  原因是什么呢？明明数据库外部可以正常连接访问，但是宿主机内部容器确实无法访问？<br/><br/>二. 原因分析<br/>  在进行docker部署的时候我们采用的是bridge网桥的模式。<br/><br/>  启动docker时，docker进程会创建一个名为docker0的虚拟网桥，用于宿主机与容器之间的通信。当启动一个docker容器时，docker容器将会附加到虚拟网桥上，容器内的报文通过docker0向外转发。<br/><br/>  如果docker容器访问宿主机，那么docker0网桥将报文直接转发到本机，报文的源地址是docker0网段的地址。而如果docker容器访问宿主机以外的机器，docker的SNAT网桥会将报文的源地址转换为宿主机的地址，通过宿主机的网卡向外发送。<br/><br/>  因此，当docker容器访问宿主机时，如果宿主机服务端口会被防火墙拦截，从而无法连通宿主机，出现No route to host的错误。<br/><br/>  而访问宿主机所在局域网内的其他机器，由于报文的源地址是宿主机ip，因此，不会被目的机器防火墙拦截，所以可以访问。<br/><br/>三. 解决方案<br/>1&gt; 关闭宿主机的防火墙<br/>systemctl stop firewalld<br/><br/>2&gt; 在防火墙上开发指定的端口<br/>firewall-cmd --zone=public --add-port=3306/tcp --permanent<br/>firewall-cmd --zone=public --add-port=3307/tcp --permanent<br/>firewall-cmd --reload<br/>注：在进行完防火墙的操作之后最好是要进行以下docker的重启，systemctl restart docker,否则容器到因为虚拟网桥失效而导致的iptables failed问题<br/><br/>四. 小结<br/>  docker的容器网络连接一直是一个问题，容器与容器之间，容器与宿主机之间，容器跨主机访问，所以在涉及到容器的网络连接的时候要注意网络的问题。<br/>Tags - <a href="https://www.heckjj.com/tags/%25E5%25AE%25B9%25E5%2599%25A8/" rel="tag">容器</a> , <a href="https://www.heckjj.com/tags/no/" rel="tag">no</a> , <a href="https://www.heckjj.com/tags/%25E6%2597%25A0%25E6%25B3%2595%25E8%25AE%25BF%25E9%2597%25AE/" rel="tag">无法访问</a> , <a href="https://www.heckjj.com/tags/%25E5%25AE%25BF%25E4%25B8%25BB%25E6%259C%25BA/" rel="tag">宿主机</a> , <a href="https://www.heckjj.com/tags/%25E9%2598%25B2%25E7%2581%25AB%25E5%25A2%2599/" rel="tag">防火墙</a> , <a href="https://www.heckjj.com/tags/%25E7%25BD%2591%25E6%25A1%25A5/" rel="tag">网桥</a> , <a href="https://www.heckjj.com/tags/docker/" rel="tag">docker</a> , <a href="https://www.heckjj.com/tags/%25E6%258A%25A5%25E6%2596%2587/" rel="tag">报文</a>
]]>
</description>
</item><item>
<link>https://www.heckjj.com/post//#blogcomment</link>
<title><![CDATA[[评论] docker容器无法访问宿主机报出 No route to host]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://www.heckjj.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>