Amazon web services 从Docker容器中检测AWS主机环境
在Docker容器中,如何检测到我正在AWS环境中运行?如果在AWS中运行,我希望相同的容器在启动时选择性地执行一些AWS命令,但是如果在本地环境中运行,则跳过这些命令 目前,我认为最简单的方法是在AWS中运行时设置环境变量 还有别的办法吗?例如:Amazon web services 从Docker容器中检测AWS主机环境,amazon-web-services,docker,amazon-ec2,containers,Amazon Web Services,Docker,Amazon Ec2,Containers,在Docker容器中,如何检测到我正在AWS环境中运行?如果在AWS中运行,我希望相同的容器在启动时选择性地执行一些AWS命令,但是如果在本地环境中运行,则跳过这些命令 目前,我认为最简单的方法是在AWS中运行时设置环境变量 还有别的办法吗?例如: curl -i http://169.254.169.254/ | grep "200 OK" 文档:检查是否在AWS上运行的粗略方法。AWS上运行的所有实例都可以通过IP访问内部元数据服务器:169.254.169.254。如果你能连接到它,那么
curl -i http://169.254.169.254/ | grep "200 OK"
文档:检查是否在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
如果Docker容器缺少curl或wget,则可以在Bash中使用以下技巧:
if ( exec 2>/dev/null ; echo > /dev/tcp/169.254.169.254/80 ) ; then
echo "AWS"
fi
看,没错。非常感谢。