如何将 ECS Docker 容器 ID 放入容器内的环境变量中

How to put ECS Docker Container ID into a Environmental Variable inside the Container

嗨,我不知道这是否可行,但我在 aws 中有一个 docker 容器

[ec2-user@ip-10-200-40-182 ~]$ docker ps
CONTAINER ID        IMAGE                                                                                                                                                                            
74566049de08        xxxxxx.xxxxx.io/customers/xxxxxxx/lin/ema:5.0.6

我想获取该容器 ID 并将其放入该 docker 容器内的环境变量中

这需要是动态的,所以每次我反弹 ecs 服务时,环境变量应该自动改变。

我试图在 docker 文件中这样做

从xxxxxxxxxxx.xxxx.ecr.eu-西-1.amazonaws.com/xxxxxxxxx:xxxxxxx

RUN uname -n > /test/tmp.log && \
export test_JMX_MANAGEMENTNODEHOSTNAME=$(cat /test/tmp.log)

但是每次我进入容器并回显 $test_JMX_MANAGEMENTNODEHOSTNAME 时,我得到的是 $(cat /test/tmp.log) 而不是容器 ID。我对 docker 有点陌生非常感谢您的帮助!

如果您可以在容器内安装aws cli,您可以在容器启动时调用ecs describe任务获取容器id并将其设置为容器内的env变量。

参考:

https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Container.html

https://docs.aws.amazon.com/cli/latest/reference/ecs/describe-tasks.html

我设法弄清楚我到底需要做什么,我只是 运行 它通过 dockerfile 中的入口点并且它起作用了:)

也感谢@Durja 提供的信息!帮我解决了下一个与 IP 相关的问题 ☺️