Docker使用LAN上的静态公共IP撰写,但与主机IP有所不同

时间:2019-01-01 14:11:01

标签: docker docker-compose

我有一个需要通过静态公共IP公开所有容器的要求。 但是,静态公共IP不能是主机IP,因为主机IP必须是动态的。

我发现的2个解决方案是macvlan和linux辅助IP,但是根据我的理解,它们不能满足我的需求。

使用macvlan,每个容器将获得单独的IP。我需要通过相同的IP访问所有容器。

使用linux辅助IP,我可以分配一个静态IP,该IP专用于我的docker容器。但是,我没有找到一种方法来管理docker容器内的/etc/network/interface

我的问题是:

  1. 是否可以使用macvlan使用相同的IP设置所有容器?
  2. 有什么方法可以管理/etc/network/interface,包括将docker容器中的ifup和ifdown包括在内吗?
  3. 是否有其他替代方法

编辑: 该图像是我希望实现的系统设计:

System design

1 个答案:

答案 0 :(得分:0)

将静态IP分配给主机,并使用普通的docker run -p选项。允许主机具有多个IP地址(大概已经具有其动态IP地址和Docker内部172.17.0.1地址),并且您可以使用附加参数docker run -p 10.10.10.10:80:8888来绑定到特定主机地址(即具体地址,端口80则转发到容器中的端口8888。

另一个好的设置是提供某种负载均衡器,为其分配静态IP地址,然后将其转发给主机。如果您想在此层上进行某种级别的速率限制或基本HTTP过滤,这也将很有帮助。

在容器中手动运行ifconfig并没有特定的技术障碍,但是没有现成的映像期望这样做,这意味着您需要编写自己的所有映像在此特定环境之外不会真正可重用。例如,开发人员可能在本地运行相同的映像时会遇到麻烦。