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

例如,如果有一个类似Dockerfile的文件:

FROM busybox
LABEL abc = abc_value1

而且,如果我根据上述文件构建并运行镜像,则如下所示:
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

生成并运行
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

话虽如此-这不是很安全,环境变量可能是更好的选择。

关于bash - 如何从容器中运行的脚本访问Docker容器的元数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37439887/

10-14 04:09