据我所知,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.我认为路由由提供商完成,因为我的服务器上没有其他路由或配置
注意:
有一个后续问题
最佳答案
首先,您不希望一次转发所有端口,因为您不一定仍然可以访问主机.这绝对应该是一个手动过程.
我希望您的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容器修改这些规则.