在Docker容器中,如何检测我在AWS环境中运行?我希望同一个容器可以选择在AWS内部运行的 IF 上执行某些AWS命令,但如果在本地环境中运行则跳过这些命令。
目前,我认为简单的方法是在AWS中运行时设置环境变量。
还有其他办法吗?
答案 0 :(得分:2)
如果你的Docker容器缺少 curl 或 wget ,你可以在Bash中使用这个技巧:
if ( exec 2>/dev/null ; echo > /dev/tcp/169.254.169.254/80 ) ; then
echo "AWS"
fi
答案 1 :(得分:1)
例如:
curl -i http://169.254.169.254/ | grep "200 OK"
文档:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/identify_ec2_instances.html
答案 2 :(得分:1)
检查您是否在AWS上运行的粗略方式。在AWS上运行的所有实例都可以访问具有IP:$ 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
在非AWS机器上:
https://code.google.com/codejam/contest/8304486/dashboard/ContestInfo