如何从运行awsvpc网络模式的ECS容器中获取我的IP地址?

问题描述 投票:0回答:1

从使用桥接模式运行的常规ECS容器或从标准EC2实例运行,我通常运行

curl http://169.254.169.254/latest/meta-data/local-ipv4

检索我的IP。

在使用awsvpc网络模式运行的ECS容器中,我得到了底层EC2实例的IP,这不是我想要的。我希望ENI的地址附在我的容器上。我怎么做?

docker amazon-ecs aws-vpc
1个回答
2
投票

AWS容器代理将新的便捷环境变量注入AWS ECS中的每个容器:${ECS_CONTAINER_METADATA_URI}

这包含元数据端点的URL,所以现在就可以了

curl ${ECS_CONTAINER_METADATA_URI}

输出看起来像

{  
   "DockerId":"redact",
   "Name":"redact",
   "DockerName":"ecs-redact",
   "Image":"redact",
   "ImageID":"redact",
   "Labels":{  },
   "DesiredStatus":"RUNNING",
   "KnownStatus":"RUNNING",
   "Limits":{  },
   "CreatedAt":"2019-04-16T22:39:57.040286277Z",
   "StartedAt":"2019-04-16T22:39:57.29386087Z",
   "Type":"NORMAL",
   "Networks":[  
      {  
         "NetworkMode":"awsvpc",
         "IPv4Addresses":[  
            "172.30.1.115"
         ]
      }
   ]
}

在关键的Networks下你会找到IPv4Address

© www.soinside.com 2019 - 2024. All rights reserved.