繁体   English   中英

从Docker容器中检测AWS主机环境

[英]Detect AWS host environment from within a Docker Container

如何从Docker容器中检测到我正在AWS环境中运行? 我希望同一个容器有选择地在从AWS内部运行的启动IF上执行一些AWS命令,但是如果在本地环境中运行,则跳过这些命令。

当前,我认为简单的方法是在AWS中运行时设置环境变量。

还有另一种方法吗?

如果您的Docker容器缺少curlwget ,则可以在Bash中使用此技巧:

if ( exec 2>/dev/null ; echo > /dev/tcp/169.254.169.254/80 ) ; then
   echo "AWS"
fi

例如:

curl -i http://169.254.169.254/ | grep "200 OK"

文件: http : //docs.aws.amazon.com/AWSEC2/latest/UserGuide/identify_ec2_instances.html

检查您是否在AWS上运行的粗略方法。 在AWS上运行的所有实例都可以访问IP为169.254.169.254的内部元数据服务器。 如果您可以连接到它,那么您就在AWS上。 否则你不是。

$ curl -s --connect-timeout 2 169.254.169.254 > /dev/null
$ echo $?
0

在非AWS机器上:

$ curl -s --connect-timeout 2 169.254.169.254 > /dev/null
$ echo $?
28

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM