今天在學習Docker的時候,啟動容器映射宿主機80端口訪問連接被拒,問題現象如下

解決思路如下:
1.查看宿主機80端口是否啟動;
2.查看selinux狀態是否為permissive或者disabled;
3.查看firewall運行狀態;
4.查看iptables規則是否允許80端口訪問。
經過排查,發現容器80端口已成功映射到宿主機80端口,firewall與selinux均已關閉,查看iptables PREROUTING與POSTROUTING鏈缺少轉發規則。
比如實現過程如下:
首先是確定你的容器ip地址,比如我這里就是172.17.0.2 ,宿主機ip地址是192.168.64.100,然后加兩個規則 iptables -t nat -A PREROUTING -m tcp -p tcp --dport 80 -j DNAT --to-destination 172.17.0.2:80 iptables -t nat -A POSTROUTING -m tcp -p tcp --dport 80 -d 172.17.0.2 -j SNAT --to-source 192.168.64.100
再次查看iptables規則,發現規則已添加成功

測試結果

