首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过mitmproxy运行docker容器

通过mitmproxy运行docker容器
EN

Stack Overflow用户
提问于 2015-07-07 22:49:19
回答 1查看 3K关注 0票数 9

我正在尝试通过在另一个码头容器中运行的mitmproxy来路由码头容器的所有流量。为了让mitmproxy正常工作,我必须更改原始docker容器的网关IP。

Here is an example of what I want to do,但我想将其限制为完全在docker容器内。

有没有想过我该怎么做呢?另外,我希望避免在特权模式下运行两个docker容器中的任何一个。

EN

回答 1

Stack Overflow用户

发布于 2015-07-09 02:26:47

授予容器的默认能力集不允许容器修改网络设置。通过在特权模式下运行,您可以将所有功能授予容器--但也可以根据需要授予单独的功能。在本例中,您需要的名称是CAP_NET_ADMIN (完整列表:http://man7.org/linux/man-pages/man7/capabilities.7.html),因此您可以将--cap-add NET_ADMIN添加到docker run命令中。

确保在启动这两个容器时使用该选项,因为它们都需要进行一些网络调整才能启用透明的数据包拦截。

在proxy容器中,根据mitmproxy透明模式说明配置iptables预路由NAT规则,然后启动mitmproxy (带-T标志开启透明模式)。我使用一个小的启动脚本作为代理镜像的入口点,因为网络设置更改只发生在容器运行时,不能在Dockerfile中指定,也不能持久保存。

在"client“容器中,只需使用ip route命令将默认网关更改为docker桥上代理容器的IP地址。如果这是您将经常重复的设置,请考虑在客户端映像上使用入口点脚本,该脚本将在容器启动时自动为您设置。容器链接使这变得更容易:您可以启动代理容器,并在启动客户端容器时链接它。然后,客户端入口点脚本可以通过环境变量访问代理容器的IP。

顺便说一句,如果您可以在非透明模式下使用mitmproxy (显式配置客户端以使用HTTP代理),我强烈建议您这样做。设置起来就不那么头疼了。

祝你好运,玩得开心!

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31272002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档