网络 – 将一个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容器修改这些规则.

相关文章

最近一直在开发Apworks框架的案例代码,同时也在一起修复Apw...
最近每天都在空闲时间努力编写Apworks框架的案例代码WeText。...
在《Kubernetes中分布式存储Rook-Ceph部署快速演练》文章中,...
最近在项目中有涉及到Kubernetes的分布式存储部分的内容,也...
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.ne...
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.ne...