如何从容器中运行的脚本访问docker容器的元数据?

我想了解是否有可能使用bash脚本读取容器的元数据(特别是标签)属性。

例如,如果有像这样的Dockerfile:

FROM busybox LABEL abc = abc_value1 

而且,如果我基于上面的文件构build并运行图像,如下所示:

 docker build . -t image1 docker run -ti image1 /bin/bash 

有什么办法可以访问bash shell里的“abc”标签的值吗? 如果是这样,怎么样?

要获得标签(以及远程API的任何东西),可以将套接字传递到容器中,并使用curl> = 7.40(这是支持--unix-socket标志的最低版本)从容器中访问远程API通过套接字:

Dockerfile:

 FROM ubuntu:16.04 RUN apt-get update \ && apt-get install curl -y LABEL abc = abc_value1 

build立并运行

 docker build -t image1 . docker run -v /var/run/docker.sock:/var/run/docker.sock -it image1 /bin/bash 

从容器内部

 curl --unix-socket /var/run/docker.sock http:/containers/$(hostname)/json 

从这里你将有一个巨大的JSON块(类似于docker检查)。 然后,您可以使用像jq这样的CLI工具来提取标签。

在Docker网站上查看更多信息: https : //docs.docker.com/engine/reference/api/docker_remote_api/#/docker-remote-api

所有这一切说 – 这不是很安全,环境variables可能是一个更好的select。