检测VM(在我的情况下是在Linux VM上运行的Docker容器)是否在Azure上运行的一种方法是使用HTTP在元数据服务中查询某些信息。
这个技巧在AWS和GCP上运行良好,可以使用DNS名称(instance-data.ec2.internal
和metadata.google.internal
)完成查询,因此在完成DNS查询时查询将很快失败。
但对于Azure,我不知道元数据服务的任何DNS名称,只知道其原始IP地址(169.254.169.254
),代码必须等待请求超时,而这需要更长的时间。
一个解决方案是找到Azure元数据服务的DNS名称,但也可能有其他解决方案。