nginx docker-image无法访问

时间:2017-04-24 10:02:33

标签: nginx docker

我是docker的新手,我有问题让nginx运行。 一切似乎都是正确的。可以使用" curl"从主机访问nginx。 iptables为docker虚拟接口设置了一条新规则。

但是无法通过互联网访问nginx。

我正在使用debian(jessie)

Linux h2127057 3.16.0-4-amd64 #1 SMP Debian 3.16.39-1+deb8u2 (2017-03-07) x86_64 GNU/Linux

docker是版本

Docker version 17.03.1-ce, build c6d412e

netstat正在给予

Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:514             0.0.0.0:*               LISTEN     
tcp        0    216 X.X.X.X:22              X.X.X.X:64103      VERBUNDEN  
tcp6       0      0 :::443                  :::*                    LISTEN     
tcp6       0      0 :::514                  :::*                    LISTEN     
tcp6       0      0 :::80                   :::*                    LISTEN     

iptables规则如下

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N DOCKER
-N DOCKER-ISOLATION
-N fail2ban-pam-generic
-N fail2ban-ssh
-N fail2ban-ssh-ddos
-A FORWARD -d 172.24.18.12/32 -p tcp -m tcp --dport 25 -j ACCEPT
-A FORWARD -d 172.24.18.12/32 -p tcp -m tcp --dport 465 -j ACCEPT
-A FORWARD -d 172.24.18.12/32 -p tcp -m tcp --dport 587 -j ACCEPT
-A FORWARD -d 172.24.18.12/32 -p tcp -m tcp --dport 110 -j ACCEPT
-A FORWARD -d 172.24.18.12/32 -p tcp -m tcp --dport 995 -j ACCEPT
-A FORWARD -d 172.24.18.12/32 -p tcp -m tcp --dport 143 -j ACCEPT
-A FORWARD -d 172.24.18.12/32 -p tcp -m tcp --dport 993 -j ACCEPT
-A DOCKER -d 172.17.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 443 -j ACCEPT
-A DOCKER -d 172.17.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 80 -j ACCEPT

正如您所看到的,另一个子网上已有规则。这是我使用普通LXC的旧虚拟基础架构。

这会让我遇到问题吗?

谢谢大家的帮助 大卫

1 个答案:

答案 0 :(得分:0)

好的,让我们得出第一个结论:

我在LXC容器中运行Web服务器并使用iptables进行端口转发没有问题。一切正常。干得好!

如果我使用docker尝试相同的操作,即使iptables设置正确且docker正在暴露端口,也无法从外部访问Web服务器。不工作了!

停止所有容器(LXC和docker)并运行裸机网络服务器,需要在iptables中指定一个指向外部IP地址的规则。可以通过互联网访问。

那么除了docker-nginx-image之外,为什么一切都能正常工作?

非常奇怪: - (

编辑: 好的,我拥有它!杀死所有LXC和docker容器后,冲洗iptables并停止fail2ban!一切都按预期工作。即使最终启动fail2ban ......

这对我来说意味着:让docker为您管理所有iptables规则。我在iptables中不够深入,但是如果你在DOCKER链之前有一个FORWARD链,就会产生问题。