Docker端口映射後外部無法訪問現象排查

情境描述

創建一個docker容器,並進行端口映射。容器啓動後,在部署容器的主機上可以訪問映射端口,但是其他主機無法訪問。

問題排查

出現上述情況,應是請求被攔截。出現該問題的可能是由於firewall配置異常、ip轉發關閉、iptables服務攔截了請求

排查firewall

(1) 使用firewall-cmd --state查看防火牆運行情況
如果防火牆處於not running,則可以排除防火牆阻斷請求的可能。
如果輸出防火牆處於running則表示防火牆正在運行,需進行下一步排查
(2) 使用firewall-cmd --list-portsfirewall-cmd --list-services查看防火牆開放了哪些端口和服務。如果開放的端口中沒有包含docker容器對外映射的端口,則可以採取以下解決方式:

  • 關閉防火牆服務systemctl stop firewalld.service
  • 添加策略打開指定端口
$ firewall-cmd --add-port=port/tcp --premanent
$ firewall-cmd reload

查看ip轉發是否開啓

通過cat /proc/sys/net/ipv4/ip_forward查看ip轉發是否開啓。如果該值爲0則需要配置其開啓

$ echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章