【问题标题】:Get nonroot UID/GID from Java8 distroless image从 Java 8 distroless 映像获取非 root UID/GID
【发布时间】:2022-11-07 23:50:32
【问题描述】:

我想在来自 Java 映像的nonroot 用户(用户名已存在)下运行容器:gcr.io/distroless/java:8。该用户已存在于映像中,并且我已向 Dockerfile 添加了一个命令:

USER nonroot

现在我想将它添加到 K8s 清单文件中,它只需要 UID/GID(不是文字用户名):

  securityContext:
    runAsUser: <USER_ID>
    runAsGroup: <GROUP_ID>
    runAsNonRoot: true

那么,问题是如何从 distroless 映像中获取nonroot 用户 ID 和组 ID(没有外壳)?

如果我不向清单文件添加任何内容,则容器以用户 nonroot 开头(在日志中可见)。这是否意味着不再使用该根目录(并且足以保证容器的安全性)?

【问题讨论】:

    标签: docker kubernetes java-8 terraform distroless


    【解决方案1】:

    如果您不向 Kubernetes 清单添加任何内容,则容器将按照 Dockerfile 中声明的 USER 运行。除非您特别需要强制容器以其他用户 ID 身份运行,否则这可能没问题。

    securityContext:
      runAsNonRoot: true
      # but don't usually need to specific specific uid/gid
    

    精心设计的图像也将能够容忍以任意用户身份运行。如果它根本不写入文件,或者只写入像/tmp这样的全局可写目录以及它特别希望从容器外部安装的存储目录,那么数字用户ID是否无关紧要“存在”在容器内,您可以在此处选择您想要的任何用户 ID。

    securityContext:
      runAsUser: 9876  # or anything else that's not 0
      runAsGroup: 9876
    

    【讨论】:

    • 感谢您的帮助,大卫迷宫。我会试试。
    猜你喜欢
    • 2022-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-12
    • 1970-01-01
    • 1970-01-01
    • 2022-09-24
    相关资源
    最近更新 更多