linux - 将不同的公共(public)IP分配给同一个Docker容器的多个实例

标签 linux docker proxy ip

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

问题

是否可以为 Linux 容器分配公共(public) IP?如何对 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.

此命令将创建一个与给定物理网络接口(interface)桥接的 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 上运行的面向公众的容器,并且确保您可以从同一个 Docker 镜像运行多个 Docker 容器并为每个容器分配一个公共(public) IP。

关于linux - 将不同的公共(public)IP分配给同一个Docker容器的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55067209/

相关文章:

python - Docker和单个python文件

docker - '--rm' 标志在做什么?

proxy - AWS : To redirect or to proxy files

c++ - Unresolved 包容性

mysql - 为什么 MySQL docker 容器忽略 MYSQL_DATABASE env var?

visual-studio - 如何在 Visual Studio 2019 中配置代理?

proxy - Nuxt Axios 动态网址

linux - NSIS 支持 Linux 和 Solaris

c - 为什么我的系统中有这么多版本的头文件?

linux - Apache Pig 进程在 Putty session 超时后被终止