如何从容器本身获取 Docker Linux 容器信息?

新手上路,请多包涵

我想让我的 docker containers 知道他们的配置,就像您可以通过元数据获取有关 EC2 实例的信息一样。

我可以使用(前提是 docker 正在监听端口 4243

 curl http://172.17.42.1:4243/containers/$HOSTNAME/json

获取它的一些数据,但想知道是否有更好的方法至少获取容器的完整 ID,因为 HOSTNAME 实际上缩短为 12 个字符并且 docker 似乎执行“最佳匹配”就可以了。

另外,如何获取 docker 主机的外部 IP(除了访问特定于 AWS 的 EC2 元数据)

原文由 Alessandro 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 508
2 个回答

我发现容器 id 可以在 /proc/self/cgroup 中找到

因此,您可以通过以下方式获取 id:

 cat /proc/self/cgroup | grep -o  -e "docker-.*.scope" | head -n 1 | sed "s/docker-\(.*\).scope/\\1/"

原文由 Thomas A. 发布,翻译遵循 CC BY-SA 3.0 许可协议

除非被覆盖,否则主机名似乎是 Docker 1.12 中的短容器 ID

 root@d2258e6dec11:/project# cat /etc/hostname
d2258e6dec11

外部

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED                 STATUS                      PORTS               NAMES
d2258e6dec11        300518d26271        "bash"              5 minutes ago

$ docker -v
Docker version 1.12.0, build 8eab29e, experimental

原文由 port5432 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题