首页 > 解决方案 > 有什么方法可以从 docker 容器中获取 EC2 实例 ip?

问题描述

我有一个在 Amazon EC2 实例上的 docker 容器内运行的 python 程序。我想在不使用http://169.254.169.254/latest/meta-data/local-ipv4此 URL 的情况下在我的 python 程序(在 docker 容器内运行)中获取 EC2 实例私有 IP。socket使用python的库很容易获得机器的私有IP ,比如

socker.gethostbyname(socket.gethostname())

但它没有给出 EC2 实例的 IP。有人知道怎么做吗?

标签: python-3.xdockeramazon-ec2

解决方案


如果您使用的是覆盖网络或外部网络,则无法从容器中获取主机 IP。可以通过运行从主机获取 EC2 实例的 IP 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`}

推荐阅读