【问题标题】:Setting Docker container hostname on Elastic Beanstalk在 Elastic Beanstalk 上设置 Docker 容器主机名
【发布时间】:2015-04-26 05:01:59
【问题描述】:

我想手动设置部署在 AWS Elastic Beanstalk 上的 Docker 容器的主机名。您可以在使用docker run -h HOSTNAME 启动容器时设置主机名,但我不知道如何(甚至是否)将自定义参数传递给docker run 命令。

Dockerrun.aws.json 文件似乎是一个可能的候选者,但没有记录的密钥可以满足我的需求。

有人知道这是否可行吗?

【问题讨论】:

    标签: amazon-web-services docker amazon-elastic-beanstalk


    【解决方案1】:

    据我所知,这不支持开箱即用。

    这里的一个可能的技巧是利用 EB 对环境变量的不良解析。您可以设置环境变量,例如:
    PARAM1=dummy -h MYHOSTNAME
    EB 不引用参数,因此您的 -h 部分将嵌入到 docker run 命令中。 我自己没试过。

    另一种选择是创建一个ebextension 文件来修补/opt/elasticbeanstalk/hooks/appdeploy/pre/04run.sh 脚本,将-h MYHOST 行注入其中。

    【讨论】:

    • 看起来很有趣!我会试一试并报告。
    • 您的问题解决了吗?我有同样的问题,并为此苦苦挣扎了几天。
    【解决方案2】:

    不确定单个 docker 容器部署,即 v1,因为我还没有尝试过,但 v2 (即多容器部署)肯定支持它们。您可以通过在Dockerrun.aws.json 中添加容器主机名 -

      "hostname": "this-is-my-container-hostname"
    

    【讨论】:

    • 我不认为这是正确的。我在文档中也找不到。
    • 在发布我之前的评论后,我打开了一张支持票,AWS 支持代表看到了同样的 StackOverflow 帖子,并确认此页面上的任何方法答案都不起作用。这些脚本已被弃用,取而代之的是其内部 ECS 代理。他们建议我探索 ECS,因为它为此提供了更多控制/选项。
    • 这看起来像是在我的文档中。 Elastic Beanstalk 的多容器配置指出配置文件格式与 ECS 任务定义相同。该文档支持主机名参数。在这里找到:docs.aws.amazon.com/AmazonECS/latest/developerguide/… 还值得一提的是,您必须有“链接”部分,并且网络必须处于桥接模式才能使这些工作。
    【解决方案3】:

    您可以通过将容器的主机名定义为环境变量来设置它。

    HOSTNAME=your-name
    

    【讨论】:

      【解决方案4】:

      如果您有多个实例,我们会使用下一个脚本修补旧平台,但您可以将其移植到新平台。 .ebextensions/01-docker-hostname.config 示例:

      files:
        "/opt/elasticbeanstalk/hooks/appdeploy/pre/04a_set_hostname.sh":
          mode: "000755"
          owner: root
          group: root
          content: |
            #!/usr/bin/env bash
            hostname $(hostname -f | cut -d"." -f1,2)
            sed -i "s/docker run -d \\\/docker run -d -h $(hostname) \\\/" /opt/elasticbeanstalk/hooks/appdeploy/enact/04run.sh
      

      如您所见,我们的脚本总是修补运行脚本。 EB 按文件名顺序运行脚本。所以你应该确保你的脚本在运行脚本之前运行。

      【讨论】:

        猜你喜欢
        • 2016-05-20
        • 2018-06-20
        • 2017-10-14
        • 2022-06-15
        • 2017-07-26
        • 2018-02-08
        • 1970-01-01
        • 2015-04-02
        相关资源
        最近更新 更多