как передать подключенным к нему ip-адресам докернизированной программы - PullRequest
0 голосов
/ 20 апреля 2019

У меня есть три оверлейные сети, подключенные к контейнеру в рое, и мне нужно дать адреса различных сетей программе, работающей внутри, когда контейнер появится. Каждая сеть предназначена для разных целей, и я не могу идентифицировать их в контейнере.

Я пробовал обычный IP a и hostname -i, но он отображает только информацию об адаптере и ничего не идентифицирует, какой оверлей на каком адаптере.

lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever

eth3@if118: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default 
    link/ether 02:42:0a:00:0e:03 brd ff:ff:ff:ff:ff:ff link-netnsid 3
    inet 10.0.14.3/24 brd 10.0.14.255 scope global eth3
       valid_lft forever preferred_lft forever

eth4@if120: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:12:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 4
    inet 172.18.0.3/16 brd 172.18.255.255 scope global eth4
       valid_lft forever preferred_lft forever

eth0@if122: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default 
    link/ether 02:42:0a:ff:00:0d brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.255.0.13/16 brd 10.255.255.255 scope global eth0
       valid_lft forever preferred_lft forever

eth1@if124: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default 
    link/ether 02:42:0a:00:0d:03 brd ff:ff:ff:ff:ff:ff link-netnsid 1
    inet 10.0.13.3/24 brd 10.0.13.255 scope global eth1
       valid_lft forever preferred_lft forever

eth2@if126: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default 
    link/ether 02:42:0a:00:0f:03 brd ff:ff:ff:ff:ff:ff link-netnsid 2
    inet 10.0.15.3/24 brd 10.0.15.255 scope global eth2
       valid_lft forever preferred_lft forever
hostname -i
10.0.14.3 10.0.13.3 10.0.15.3

Показывает адреса, но ничего не идентифицирует, о чем и какой оверлей. Любые указатели будут оценены.

1 Ответ

0 голосов
/ 26 апреля 2019
  1. Вы можете написать скрипт, который будет запускаться на хосте при запуске службы роя. Сценарий запустит Docker Inspect для вашего контейнера и запишет информацию о сети в файл. Файл будет храниться в точке монтирования контейнера. Затем вы можете прочитать информацию из этого файла из контейнера.

  2. Более сложным решением будет создание пользовательского API, который будет запускать проверку Docker и возвращать информацию о сети в ответ.

  3. Оверлейные сети, скорее всего, назначены интерфейсам по порядку. Небольшое тестирование показывает, что это правда, но мне не нравится полагаться на предположения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...