我如何从Docker中运行的程序中finddocker的名字

为了logging目的,我想知道我的程序正在运行的Docker实例的名称。

例如,如果我启动它为:

docker run -d --name my-docker-name some/image 

我如何从运行它的程序中find实际的docker名字(在这个例子中是my-docker-name)?

TL; DR:– --hostname选项。


问题

容器的程序无法访问其容器的名称。

解决schemea)-dirty并不容易 –

https://stackoverflow.com/a/36068029/5321002

解决schemeb)

添加与-h|--hostname=""容器名称相同名称的-h|--hostname=""选项。 那么你只需要从程序中查询主机名,就完成了。

编辑

解决schemec)

按照你的build议,提供一个带有名字的envvariables。 总体命令如下所示:

 $name="custom-uniq-name" $docker run -h $name --name $name -e NAME=$name image-to-run 

如果你添加

-v /var/run/docker.sock:/var/run/docker.sock

给你

docker run

命令,您将docker套接字暴露给容器,并且您将能够启动docker命令,例如

docker ps --filter

请记住,这是潜在的危险,现在你的容器有一个特权访问主机。