2016-08-02 84 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規則並且不會從流量獲得響應,這是我(其他測試)能夠向我自己證明發生了什麼的。