Docker (OCI) 容器中的服务是否可以读取 LABEL 命令添加的容器注释?

Can services in a Docker (OCI) container read the container's annotations added by the LABEL command?

我有一个 dockerfile,它创建了一个包含 API 服务的容器。 dockerfile 使用一些注释标记图像,如下所示:

LABEL org.opencontainers.image.vendor="MyCompany"
LABEL org.opencontainers.image.created="2021-02-12T12:10:15Z"
LABEL org.opencontainers.image.version="2.0.5"
LABEL org.opencontainers.image.revision="<gitcommithash>"

我想在 API 服务 /api/version 上公开一个端点,returns 版本信息。版本信息已经在上面的 LABEL 语句中标记在容器上。我想知道容器内的 API 服务是否能够以某种方式检索这些注释。

容器可以读取自己的 LABEL 注释吗?

首先快速说明标签和注释是两种不同的东西。注释将继续 OCI manifest, and these labels go in the image config。不幸的是,我认为我们没有太多工具来设置和读取注释,所以每个人都只使用标签。

从容器内部,我不知道有什么方法可以检查容器上的标签。您需要使运行时引擎可以从容器内部访问,或者让该引擎注入诸如环境变量或包含这些值的文件之类的东西。前者是一个安全漏洞,我还没有听说过任何运行时会做后者。快速搜索显示 this old issue 正在寻找提供容器自检的标准方法,这与 AWS 为 EC2 实例提供元数据服务的方式不同。