我想在nonroot
用户(用户名已经存在)下运行Java映像中的容器:gcr.io/distroless/java:8。此用户已存在于映像中,我已向Dockerfile添加了一个命令:USER nonroot
个
现在我想把它添加到K8s清单文件中,它只需要UID/GID(而不是字面的用户名):
securityContext:
runAsUser: <USER_ID>
runAsGroup: <GROUP_ID>
runAsNonRoot: true
因此,问题是如何从无失真映像(内部没有shell)中获取nonroot
用户ID和组ID?
如果我不向manifest文件添加任何内容,容器将以用户nonroot
开始(在日志中可以看到),这是否意味着不再使用该root用户(这足以保证容器的安全性)?
1条答案
按热度按时间ee7vknir1#
如果不向Kubernetes清单添加任何内容,容器将以Dockerfile中声明的
USER
运行。除非您特别需要强制容器以其他用户ID运行,否则这样做可能没问题。一个设计良好的映像也能够容忍以任意用户的身份运行。如果它根本不写文件,或者只写全局可写的目录(如
/tmp
)和它特别希望从容器外部挂载的存储目录,那么数字用户ID是否“存在”于容器内部并不重要,您可以在这里选择任何您想要的用户ID。