无法在Docker容器中设置net.bridge.bridge-nf-call-iptables

我试图控制是否通过我的Docker容器中设置的网桥的数据包​​发送到iptables进行处理使用以下命令:

sysctl -w net.bridge.bridge-nf-call-iptables="1" 

不幸的是,这不起作用:

 sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-iptables: No such file or directory 

看起来我的Docker容器中没有/ proc / sys / net / bridge目录,尽pipe目录在我的主机中。 在主机上运行同样的命令。 我已经检查,并且据我所知,所有正确的模块都安装在主机上,并出现在Docker容器中。

谷歌一直没有用,所以我想知道是否有其他人看到这个问题和/或有一个解决scheme?

在容器内运行命令没有意义。 它使用iptables激活过滤网桥stream量。 如果你想用iptables过滤Docker容器之间的stream量,这很有用。 所以它必须在主机上运行。

你也试图改变内核configuration,但容器没有自己的内核。 所以无论如何都不允许用sysctl来改变任何东西。

当你运行docker的时候,试着通过映射目录。 如果唯一的问题是docker容器中需要hosts目录,请尝试:

 docker run -v /proc/sys/net/bridge:/proc/sys/net/bridge ... 

iptables可能需要通过映射更多的东西,但是,这将通过!

你有没有尝试运行你的容器作为特权?

 docker run --privileged -device=/proc/sys/net/bridge:/proc/sys/net/bridge 

请参阅http://docs-stage.docker.com/v1.11/engine/reference/run/#runtime-privilege-and-linux-capabilities