nginx docker-image无法访问
我是新来的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 XXXX:22 XXXX: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的旧虚拟基础架构。
这可以让我得到问题吗?
谢谢大家帮助大卫
好的,让我们来看第一个结论:
在LXC容器中运行Web服务器并使用iptables进行端口转发,我没有任何问题。 一切工作正常。 很棒的工作!
如果我尝试与docker相同的话,即使iptables设置正确,docker正在暴露端口,webserver也无法从外部访问。 不工作!
停止所有容器(LXC和docker)并运行一个裸机networking服务器,它需要在iptables中指定一个指向外部IP地址的规则。 它会从互联网上到达。
那么为什么一切正常,除了docker-nginx-image?
很奇怪 :-(
编辑:好吧,我有! 杀死所有LXC和docker集装箱后,冲洗iptables并停止fail2ban! 这一切都是应该的。 毕竟,即使启动fail2ban …
这对我来说意味着:让dockerpipe理你所有的iptables规则。 我在iptables中不够深入,但是如果你在DOCKER链之前有一个FORWARD链,就会产生问题。