【问题标题】:docker routing no iptablesdocker 路由没有 iptables
【发布时间】:2016-12-08 06:29:55
【问题描述】:

我有一个使用命令运行的 docker nginx 映像 sudo docker run -p 8002:80 nginx

我想知道的是,路由如何从 hostmachine:8002 到达侦听端口 80 的容器。通常有 iptables 非常明确地这样做,但如果禁用 iptables 它仍然有效。然后我注意到有一个docker-proxy 进程在侦听每个暴露的端口,我假设它是代理/nat。所以我用--userland-proxy=false 禁用了用户态代理。这样做之后,我现在只看到一个进程docker-current,仍在侦听所有暴露的端口。我只能假设docker-current 进程正在执行 nat,但这让我想知道为什么用户级代理和/或 iptables 会一直存在?有没有一种方法可以让我自己看到/证明发生在哪里(即打开/关闭某些东西并且不能卷曲我的 nginx 容器然后能够)?

【问题讨论】:

    标签: docker routing iptables nat


    【解决方案1】:

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

    1. iptables 规则的存在是希望通过在内核空间中进行 nat'ing 而不是将其发送到用户空间进行 nat'ing 来节省时间。您可以终止正在侦听端口的进程并删除 iptables nat 规则,而不会从流量中获得响应,这就是我(在其他测试中)能够向自己证明发生了什么的方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多