网络 – 将一个IP转发到docker容器

前端之家收集整理的这篇文章主要介绍了网络 – 将一个IP转发到docker容器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

据我所知,docker在桥接器docker0上运行具有自己的IP和完全打开的端口的容器.

假设我启动了一个容器,它有自己的IP:172.17.0.11,我有一个虚拟以太网接口eth0.1,公共IP 93.x.x.x

如何将eth0.1转发到docker容器,以便我可以通过eth0.1 IP到达容器?

我可以一次转发所有端口吗? (也许用脚本)

如何禁用docker默认行为,以便每个容器只在docker0接口上获取IP,并且我手动设置转发?

@Xavierlucas

我把它联系起来是因为我觉得它在那里得到了更好的解释.如果检查debian配置,我将添加到/ etc / net / interfaces文件中:

post-up /sbin/ifconfig eth0:X IP.OF.FAIL.OVER netmask 255.255.255.255 broadcast IP.OF.FAIL.OVER
post-down /sbin/ifconfig eth0:X down

这样我就有了一个虚拟接口(eth0:0),它有一个由我的提供商转发的公共IP.我认为路由由提供商完成,因为我的服务器上没有其他路由或配置

注意:

有一个后续问题

why port forwarding is not working in this setup?

最佳答案
首先,您不希望一次转发所有端口,因为您不一定仍然可以访问主机.这绝对应该是一个手动过程.

我希望您的Docker容器中有一个Web服务,所以如果您希望转发,例如从您的eth0.1 IP地址到Docker容器的IP地址的端口80,您可以使用以下iptables规则;

iptables -A PREROUTING -t nat -i eth0.1 -p tcp --dport 80 -j DNAT --to 172.17.0.11:80
iptables -A FORWARD -p tcp -d 172.17.0.11 --dport 80 -j ACCEPT

然后可以根据需要为任何其他端口/ docker容器修改这些规则.

猜你在找的Docker相关文章