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



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

例如,如果有一个 Dockerfile,例如:

FROM busybox
LABEL abc = abc_value1

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

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

有没有办法访问 bash 外壳内"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)。然后,您可以使用 CLI 工具(如 jq)提取标签。

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

综上所述 - 这不是很安全,环境变量可能是一个更好的选择。

相关内容

  • 没有找到相关文章

最新更新