本文介绍的方法是通过环境变量把容器自己的名字传递进去,仅支持以下两种部署方式:
docker service create
docker stack deploy
docker service create
docker service create -e MY_NAME="{ {.Task.Name}}" -d --name abc tomcat:8.5-alpine
这样容器里的MY_NAME
环境变量就是容器自己的名字,比如:abc.1.rik8xgc0b9i2r7odnm6vnhnqg
docker stack deploy
docker-compose file:
version: '3.7'services: webapp: image: tomcat:8.5-alpine environment: MY_NAME: "{ {.Task.Name}}"
同样地将容器名传到环境变量MY_NAME
里。
参考资料
- ,在这个文章里提到了可以用
{ {.Task.Name}}
做template expansion来设置变量。 - 上述两种方式都用到了go template, 列举了几种template expansion的使用方式。
- ,这个issue提出要能够在容器内获得自己的名字,但是此issue没有被解决,依然在讨论中。