美文网首页
外部无法访问docker映射的端口

外部无法访问docker映射的端口

作者: 悟道人 | 来源:发表于2019-04-02 10:44 被阅读0次

    问题:
    服务器域名是 www.test.com,使用 docker run -p 8023:80 ...成功启动容器,未报任何错误,浏览器输入 www.test.com:8023无法访问容器内部的web服务

    解决步骤:
    1、iptbles开启8023端口
    结果:仍然无法访问
    2、进入容器内部,查询容器ip是172.17.0.2,在服务器使用 wget http://172.17.0.2 能正常访问,但是访问速度很慢
    结果:容器正常工作,判断应该是iptables的问题
    3、cat /etc/sysconfig/iptables查看iptables配置文件如下

    *filter                                                                                                                      
    :INPUT DROP [0:0]                                                                                                            
    :FORWARD ACCEPT [0:0]                                                                                                        
    :OUTPUT ACCEPT [0:0]                                                                                                         
    :syn-flood - [0:0]                                                                                                           
    -A INPUT -i lo -j ACCEPT                                                                                                     
    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT                                                                      
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT                                                                   
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT                                                            
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 8023 -j ACCEPT                                                                                                                 
    -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT                                                                             
    COMMIT 
    

    原来是缺少nat规则,在配置文件里面添加nat配置规则

    *nat                                                                                                                         
    :PREROUTING ACCEPT [31:1396]                                                                                                 
    :INPUT ACCEPT [8:464]                                                                                                        
    :OUTPUT ACCEPT [79:4934]                                                                                                     
    :POSTROUTING ACCEPT [79:4934]                                                                                                
    :DOCKER - [0:0]                                                                                                              
    -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER                                                                         
    -A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER                                                            
    -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE                                                                   
    -A DOCKER -i docker0 -j RETURN                                                                                                            
    COMMIT  
    

    4、新增映射端口

    iptables -t nat -A DOCKER ! -i br0 -p tcp -m tcp --dport 8023 -j DNAT --to-destination 172.17.0.2:80
    

    5、重启iptables service iptables restart
    6、浏览器正常访问 www.test.com:8023,问题解决

    相关文章

      网友评论

          本文标题:外部无法访问docker映射的端口

          本文链接:https://www.haomeiwen.com/subject/axswbqtx.html