从Docker容器

时间:2017-06-16 21:19:49

标签: amazon-web-services docker amazon-ec2 containers

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

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

还有其他办法吗?

3 个答案:

答案 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