【问题标题】:How to access the metadata of a docker container from a script running inside the container?如何从容器内运行的脚本访问 docker 容器的元数据?
【发布时间】:2016-09-23 05:17:12
【问题描述】:

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

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

FROM busybox
LABEL abc = abc_value1

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

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

有什么方法可以访问 bash shell 中“abc”标签的值吗?如果有,怎么做?

【问题讨论】:

    标签: bash docker dockerfile


    【解决方案1】:

    要获取标签(以及来自远程 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 的网站上查看更多信息:https://docs.docker.com/engine/reference/api/docker_remote_api/#/docker-remote-api

    说了这么多——这不是很安全,环境变量可能是更好的选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-21
      • 2022-10-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多