Назначьте разные публичные IP-адреса нескольким экземплярам одного контейнера Docker. - PullRequest
0 голосов
/ 08 марта 2019

Я создал Docker-контейнер, в котором я установил Python 3.6 и некоторые специальные программные пакеты.Там я запускаю приложение, которое подключается к удаленной службе API, которая имеет ограничения по соотношению вызовов для каждого IP-адреса (т. Е. IP не может отправлять больше, чем x вызовов в минуту в службу API, в противном случае он блокируется).В результате я хочу использовать несколько копий одного контейнера, каждый из которых соединяется с другим IP, чтобы я мог обойти эту проблему.

ВОПРОС

IsМожно ли назначить публичный IP для контейнера Linux?Как это можно сделать с док-контейнером? Может быть через прокси?

1 Ответ

1 голос
/ 08 марта 2019

Чтобы назначить общедоступный IP-адрес для док-контейнера, необходимо использовать Сетевой драйвер Macvlan , например:

Сетевой драйвер Macvlan можно использовать для назначения MAC-адресак виртуальному сетевому интерфейсу каждого контейнера, делая его физическим сетевым интерфейсом, напрямую подключенным к физической сети.

Эта команда создаст сеть 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, и, конечно, из того же образа докера вы можете запустить несколько докеровКонтейнер и назначить публичный IP для каждого.

...