【问题标题】:Detect AWS host environment from within a Docker Container从 Docker 容器中检测 AWS 主机环境
【发布时间】:2017-11-19 18:11:45
【问题描述】:

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

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

还有其他方法吗?

【问题讨论】:

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


【解决方案1】:

如果你的 Docker 容器缺少 curlwget,你可以在 Bash 中使用这个技巧:

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

【讨论】:

    【解决方案2】:

    例如:

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

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

    【讨论】:

      【解决方案3】:

      检查您是否在 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
      

      【讨论】:

      • 正确。谢谢!
      猜你喜欢
      • 2019-04-25
      • 1970-01-01
      • 1970-01-01
      • 2020-10-22
      • 2017-05-30
      • 1970-01-01
      • 2019-06-23
      • 2016-03-07
      • 2019-06-16
      相关资源
      最近更新 更多