我有一个Docker主机,应该允许每个容器有多个静态IP地址.然后,容器内的应用程序应该能够选择将流量发送到远程主机的地址(例如ping -I <source-address> example.com).
想象一下这样的设置:IP地址10.0.0.10 - 10.0.0.19被分配给ContainerA,10.0.0.20 - 10.0.0.29ContainerB等等.ContainerA的地址范围的任何流量都会转发到ContainerA,而传出的流量来自ContainerA可以选择的范围内的地址.这同样适用于ContainerB.
默认--net=bridge模式似乎不支持此功能.我能得到的最接近的是,任何ContainerA地址的传入流量都被正确地转发到容器,但是传出流量始终来自同一个地址.
使用时--net=host,第一个容器将附加到所有可用的IP地址,因此第二个容器将无法打开其IP范围内的套接字.
该命令的--ip选项docker run似乎接近我所需要的,正如本博文中所解释的那样.不幸的是,它似乎不支持每个容器的多个静态IP.
如果更方便,使用CIDR子网而不是IP范围就可以了.
我如何配置Docker来实现这一目标?
在发布我的问题之前,我想知道是否有可能实现我想要的.
我有,比方说,运行带有nginx和letsencrypt的docker容器的myserver.com.在同一台服务器上还有2个运行网站的docker容器.
现在所有的都被重定向好了,所以www.myserver.com去了docker 1而site2.myserver.com去了docker 2.
我希望通过HTTPS运行所有通信,但这里开始麻烦.所以,我的问题是:使用来自letsencrypt的证书,使用nginx和letsencrypt的docker是否可以连接到另一个docker?对我来说,它似乎是某种中间人"攻击".更多原理图:
浏览到http:// site2.myserver.com - > nginx重定向到https:// site2.myserver.com - >连接到端口80上的容器2(192.168.0.10).或者另一个选项:浏览到http:// site2.myserver.com - > nginx重定向到https:// site2.myserver.com - >连接到具有site2.myserver.com证书的端口443上的容器2(192.168.0.10).
如果无法完成,那么解决方案是什么?将证书复制到docker容器并使它们运行https,以便将http请求重定向到该容器的https端口?
浏览到http:// site2.myserver.com - > nginx转发请求 - >连接到具有site2.myserver.com证书的端口443上的容器2(192.168.0.10).
谢谢,Greggy