Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何从容器内运行的脚本访问docker容器的元数据?_Bash_Docker_Dockerfile - Fatal编程技术网

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

Bash 如何从容器内运行的脚本访问docker容器的元数据?,bash,docker,dockerfile,Bash,Docker,Dockerfile,我试图了解是否可以使用bash脚本读取容器的元数据(特别是标签)属性 例如,如果存在Dockerfile,如: FROM busybox LABEL abc = abc_value1 如果我基于上面的文件构建并运行一个映像,如下所示: docker build . -t image1 docker run -ti image1 /bin/bash 有没有办法访问bashshell中“abc”标签的值?如果是,如何获取标签?要获取标签(以及远程API中的任何内容),可以将套接字传递到容器中,并

我试图了解是否可以使用bash脚本读取容器的元数据(特别是标签)属性

例如,如果存在Dockerfile,如:

FROM busybox
LABEL abc = abc_value1
如果我基于上面的文件构建并运行一个映像,如下所示:

docker build . -t image1
docker run -ti image1 /bin/bash
有没有办法访问bashshell中“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
构建并运行

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 inspect)。然后,您可以使用类似于
jq
的CLI工具来提取标签

请参阅docker网站上的更多信息:

所有这些都说明了这不是很安全,环境变量可能是更好的选择。