加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 03:37:22 所属栏目:安全 来源:网络整理
导读:我试图了解是否可以使用bash脚本读取容器的元数据(特别是Labels)属性. 例如,如果有一个Dockerfile,如: FROM busyboxLABEL abc = abc_value1 而且,如果我基于上面的文件构建并运行图像,如下所示: docker build . -t image1docker run -ti image1 /bin/bash

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

例如,如果有一个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

所有这一切 – 这不是很安全,环境变量可能是一个更好的选择.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读