問題:
Linux安裝了docker,docker啟動了一個nginx容器,通過 80 端口無法正常訪問
故障排查:
1、檢查 nginx 容器啟動的命令或者yaml文件,查看是否有跟本機端口進行綁定
啟動nginx容器的時候,需要將本地的80端口(其他端口同理)跟nginx容器80端口(也可以是其他端口綁定)進行綁定,這樣的話訪問本地80端口才能正常跳轉到nginx容器對應的端口
2、容器啟動之后,運行:
docker ps -a
查看容器的啟動狀態以及對應端口的綁定情況
3、查看linux端口的使用情況,運行:
netstat -ntlp
查看linux對應的端口(80端口)是否處理正常監聽的狀態
4、查看防火牆,運行:
iptables -nvL
查看里面是否有80端口,若沒有的話,進行4.1、4.2步驟
4.1、查看linux上是否有/etc/sysconfig/iptables這個文件,有的話,vim進行修改,查看是否有80端口,沒有的話加上
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
上面這行代碼放在 “-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT” 這一行之后就行,意思是暴露80端口
修改完成之后,重啟下防火牆,運行:
service iptables restart
4.2、可能部分 CentOs7 以后的 linux 機器沒有 /etc/sysconfig/iptables 這個文件的話,直接運行:
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
Tips:重啟iptables后,要重啟下docker,再啟動你的nginx容器
systemctl restart docker
5、若是雲主機,還要去看下ECS對應的安全組(出入網配置)中是否有對應的端口
