我如何从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
请记住,这是潜在的危险,现在你的容器有一个特权访问主机。