如何从容器内获取docker的容器名称?
我无法使用inspect,因为我必须使用容器内部的脚本从JSON url获取信息。
答案 0 :(得分:7)
如果您指的是env中可用的Container ID作为hostname变量。它应该与大多数操作的名称互换。
env
HOSTNAME=5252eb24b296
TERM=xterm
....
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5252eb24b296 ubuntu:14.04 "bash" 23 seconds ago Up 22 seconds test
答案 1 :(得分:4)
我认为,使用--cidfile
和-v
选项组合的最可靠方式。
docker run --cidfile=/tmp/container.id -v /tmp/container.id:/tmp/container.id ${IMAGE}
如果您以这种方式启动容器,则可以从容器内部阅读/tmp/container.id
。
答案 2 :(得分:3)
如果您在容器内有泊坞者,则
(你需要绑定-v /var/run/docker.sock:/var/run/docker.sock)
并且主机名未被修改,您可以通过以下方式获得:
docker inspect -f '{{.Name}}' $HOSTNAME
但此解决方案只能用于边缘情况。
答案 3 :(得分:2)
在docker-compose的情况下,我们在主机名前面有一个/所以使用cut我们删除了它。
docker inspect -f '{{ .Name }}' "$HOSTNAME" | cut -c 2-
答案 4 :(得分:1)
如果您想要容器名称而不是容器ID,则可以在容器的eth0上进行反向DNS查找。
dig -x `ifconfig eth0 | grep 'inet' | awk '{print $2}'` +short | cut -d'.' -f1
这为您提供了友好的名称,而不是ID。
答案 5 :(得分:0)
您可以使用cut -c9- < /proc/1/cpuset