将不同的 public IP 分配给同一 Docker 容器的多个实例

Assign different public IPs to several instances of same Docker container

我制作了一个 docker 容器,其中设置了 python 3.6 和一些特定的软件包。在那里,我 运行 一个连接到远程 API 服务的应用程序具有每个 IP 调用比率限制​​(即 IP 不可能每分钟向 API 服务,否则会被阻塞)。因此,我想使用同一个容器的多个副本,每个副本都连接到不同的 IP,这样我就可以绕过这个问题。

问题

是否可以将 public IP 分配给 linux 容器?如何对 docker 容器完成?也许通过代理?

为了将 public IP 分配给 docker 容器,您需要使用 Macvlan network driver 例如:

Macvlan network driver can be used to assign a MAC address to each container’s virtual network interface, making it appear to be a physical network interface directly connected to the physical network.

此命令将创建一个与给定物理网络接口桥接的 Macvlan 网络

docker network create -d macvlan -o macvlan_mode=bridge --subnet=172.16.86.0/24 --gateway=172.16.86.1 -o parent=eth0 pub_net

然后创建将使用上述网络的容器:

docker run --name web_container --net=pub_net --ip=172.16.86.2 --mac-address 25-EE-4E-B5-21-48 -itd nginx

现在你在 172.16.86.2 上有一个 public 面向容器 运行 并且确保从同一个 docker 图像你可以 运行 多个 docker 容器并为每个容器分配一个 public IP。