Docker暴露端口服务器公网IP无法访问问题排查
生活随笔
收集整理的這篇文章主要介紹了
Docker暴露端口服务器公网IP无法访问问题排查
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- 一、未打開安全組策略
- 二、防火墻開放端口未設置
- 三、沒有啟用IP_FORWARD
環境:阿里云CentOS7 服務器
問題:當啟動一個容器向外部暴露端口時,服務器公網IP:端口號無法訪問
docker run -d --name nginx01 -p 90:80 nginx
一、未打開安全組策略
暴露給外部的端口需要打開對應的安全組設置,比如這里nginx對外暴露90端口,就需要添加如下的安全組配置
二、防火墻開放端口未設置
首先查看防火墻是否開啟,結果為not running表示未開啟,則不是防火墻的問題,跳過
# 查看防火墻是否開啟
firewall-cmd --state
如果顯示running,則繼續排查,查看防火墻開放的端口
# 查看防火墻所開放的端口
firewall-cmd --list-ports[root@zsr ~]# firewall-cmd --list-ports
20/tcp 21/tcp 22/tcp 80/tcp 8888/tcp 39000-40000/tcp 3306/tcp 3306/udp 8080/tcp 8080/udp 3355/tcp
也可以用firewall-cmd --list-all查看防火墻的詳細信息
我這里的問題就是防火墻未開放90端口,所以要開放防火墻的對外暴露的端口
# 開放90端口(--premanent表示永久添加)
firewall-cmd --permanent --add-port=90/tcp# 重啟防火墻(修改配置后要重啟防火墻)
firewall-cmd --reload
添加完成后再次查看就可以看到90端口被開放
三、沒有啟用IP_FORWARD
這個問題一般不會出現,默認都是打開的,我們用如下命令查看
# 查看是否啟動IP_FORWARD
sysctl net.ipv4.ip_forward
結果為1則表示啟動,為0則未啟動,用如下命令啟動
echo 'net.ipv4.ip_forward = 1' >> /usr/lib/sysctl.d/50-default.conf
執行完成后,重啟服務器或使用下面的命令從文件中加載配置:
sysctl -p /usr/lib/sysctl.d/50-default.conf
總結
以上是生活随笔為你收集整理的Docker暴露端口服务器公网IP无法访问问题排查的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 单周期十条指令CPU设计与verilog
- 下一篇: Nginx最新版安装教程(Windows