ego*_*doe 11 bash docker dockerfile
我试图了解是否可以使用bash脚本读取容器的元数据(特别是标签)属性.
例如,如果有一个Dockerfile,如:
FROM busybox
LABEL abc = abc_value1
Run Code Online (Sandbox Code Playgroud)
而且,如果我基于上面的文件构建并运行图像,如下所示:
docker build . -t image1
docker run -ti image1 /bin/bash
Run Code Online (Sandbox Code Playgroud)
有没有办法在bash shell中访问"abc"标签的值?如果是这样,怎么样?
Jos*_*osh 10
要获取标签(以及远程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
Run Code Online (Sandbox Code Playgroud)
建立并运行
docker build -t image1 .
docker run -v /var/run/docker.sock:/var/run/docker.sock -it image1 /bin/bash
Run Code Online (Sandbox Code Playgroud)
从容器内部
curl --unix-socket /var/run/docker.sock http:/containers/$(hostname)/json
Run Code Online (Sandbox Code Playgroud)
从这里你将拥有一大块JSON(类似于docker inspect).然后,您可以使用CLI工具jq来取出标签.
有关docker网站的更多信息,请访问:https://docs.docker.com/engine/reference/api/docker_remote_api/#/docker-remote-api
所有这一切 - 这不是很安全,环境变量可能是一个更好的选择.
| 归档时间: |
|
| 查看次数: |
6109 次 |
| 最近记录: |