Есть ли способ получить ip экземпляра EC2 из контейнера Docker? - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть программа на Python, которая выполняется внутри контейнера докера на экземпляре Amazon EC2.Я хочу получить частный IP-адрес экземпляра EC2 внутри моей программы на python (которая выполняется внутри контейнера Docker) без использования http://169.254.169.254/latest/meta-data/local-ipv4 этого URL.Получить личный IP-адрес компьютера легко, используя библиотеку Python socket, например

socker.gethostbyname(socket.gethostname())

, но он не дает IP-адрес экземпляра EC2.У кого-нибудь есть идеи, как это сделать?

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019

Невозможно получить IP-адрес хоста из контейнера, если вы используете оверлейную сеть или внешнюю сеть.Можно получить IP-адрес экземпляра EC2 с хоста, запустив curl http://169.254.169.254/latest/meta-data/local-ipv4

Передав это как переменную среды при запуске контейнера.Например,docker run -e HOSTIP=$(http://169.254.169.254/latest/meta-data/local-ipv4)

или в вашем файле композиции:

environment:
  - HOSTIP=${HOSTIP:-`curl http://169.254.169.254/latest/meta-data/local-ipv4`}
0 голосов
/ 20 сентября 2019

Чтобы узнать IP-адрес хост-машины, вы можете сделать следующее внутри контейнера докера.

/sbin/ip route|awk '/default/ { print $3 }'

В python вы, вероятно, можете использовать модуль subprocess для получения результата.
https://docs.python.org/3/library/subprocess.html

Аналогичный вопрос: Как получить IP-адрес хоста докера из контейнера докера

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