如何从Docker中运行的程序中找到docker名称

时间:2016-03-17 17:19:53

标签: docker

出于日志记录的目的,我想知道我的程序运行的Docker实例的名称。

例如,如果我将其作为:

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

如何在其中运行的程序中找到实际的泊坞窗名称(在此示例中为my-docker-name)?

2 个答案:

答案 0 :(得分:1)

TL; DR:--hostname选项。

问题

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

解决方案a) - 脏而且不容易 -

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

解决方案b)

添加与docker容器名称相同名称的选项-h|--hostname=""。然后你只需要从程序中查询主机名即可。

修改

解决方案c)

按照您的建议提供带有名称的env变量。总体命令如下所示:

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

答案 1 :(得分:0)

如果你添加

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

到你的

docker run

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

docker ps --filter

请记住,这有潜在危险,现在您的容器可以访问主机。