2016-08-02 41 views
1

我有命令运行的泊坞窗nginx的图像 sudo docker run -p 8002:80 nginx搬运工路由没有iptables的

什么我不知道是怎么做的路由工作从hostmachine去:8002去的容器侦听端口80通常有很明确地做到这一点的iptables,但是如果你禁用iptables,它仍然可以工作。然后我注意到有一个docker-proxy进程监听每个暴露的端口,我会假设代理/ NAT。所以我用--userland-proxy=false禁用了userland代理。这样做之后,我现在只能看到一个进程docker-current,仍在监听所有暴露的端口。我只能假设docker-current进程正在执行NAT,但是这让我想知道为什么userland代理和/或iptables在那里?有没有一种方法可以让我看到/证明发生了什么事情(即打开/关闭某些东西,不能卷曲我的nginx容器然后就可以)?

回答

0

为了完整起见,我会回答我自己的问题。

  1. iptables规则是有希望通过在内核空间中自动节省时间而不是发送给用户空间来做自然事件。你可以杀死在端口上侦听的进程并删除iptables nat规则并且不会从流量获得响应,这是我(其他测试)能够向我自己证明发生了什么的。