docker - 如何在 Kubernetes 中将用于容器的 Docker 镜像的摘要作为环境变量传递

标签 docker kubernetes

我正在使用 Kubernetes 运行 Docker 镜像。我想将正在使用的图像的摘要传递给容器。这样容器内的代码就可以使用它来调试/记录日志。问题是,如果不将图像摘要硬编码到 pod 配置中,我似乎无法找到一种方法来做到这一点。

有没有办法定义 pod 配置方式,以便它动态地将摘要作为环境变量传递给最终使用的 Docker 镜像版本?

最佳答案

无论 Kubernetes 碰巧知道什么,都可以使用 downward API 进行注入(inject)。那组数据在 the API reference for Pod objects .

看起来这应该可行:

env:
  - name: DOCKER_IMAGE_ID
    valueFrom:
      fieldRef:
        fieldPath: status.containerStatuses[0].imageID

您可能更愿意注入(inject) spec.containers[0].image 名称,这样事后会更容易理解。如果您使用像 Helm 这样的工具要生成配置,您还可以使用其值系统:

image: {{ .Values.image }}:{{ .Values.tag }}
env:
  - name: DOCKER_IMAGE_TAG
    value: {{ .Values.tag }}

关于docker - 如何在 Kubernetes 中将用于容器的 Docker 镜像的摘要作为环境变量传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54467741/

相关文章:

amazon-web-services - 使用来自 docker 镜像的 lambda 的 aws localstack,调用时出错错误 : No such container:

docker - 在Jupyter docker中,无法连接到内核

docker - 如果来自守护进程的错误响应是 : Cannot Kill Container [. ..] 权限被拒绝,如何停止运行容器?

java - 如何使用maven创建示例Openwhisk-Java应用程序并为其创建Docker镜像

postgresql - 在 kubernetes pod 被杀死后释放 JDBC 连接

nginx k8s 入口 - 强制 www 和 https?

docker - 如何从 sha 中提取 docker 镜像名称

django - kubernetes 集群中 django 应用程序的 Nginx 配置

ssl - 具有 SDS 和双向 TLS 的 Istio : upstream connect error or disconnect/reset before headers. 重置原因:连接失败

kubernetes - 如果没有 kubernetes API,kubernetes 副本集中的 pod 如何发现彼此并相互通信?