用户ID与Dockerfile中的用户不匹配的Openshift pod runnning

问题描述

我们在Dockerfile和入口点Shell脚本中拥有“默认”用户,需要在运行时执行。当我们将其部署到Openshift集群(4.6)中时,pod拥有不同的用户,并且由于此入口点外壳脚本失败,因此应用程序无法启动。要求您提出建议,即使在POD中与用户一起执行这些Shell脚本

解决方法

Openshift提供了安全上下文约束(SCC)来控制Pod的权限。使用它们,您可以控制容器或容器集合可以执行的权限/操作以及它们可以访问的资源。 SCC允许管理员控制的几件事:

  • pod是否可以运行特权容器。
  • 容器的SELinux上下文。
  • 容器用户ID。
  • 拥有吊舱体积的FSGroup的分配。
  • 允许的补充组的配置。
  • 容器是否需要使用只读的根文件系统。
  • 卷类型的用法。

SCC由控制窗格可访问的安全功能的设置和策略组成。如果我正确理解了您的问题,则需要检查RunAsUser策略:

  1. MustRunAs-需要配置runAsUser。使用配置的runAsUser作为默认值。针对已配置的runAsUser进行验证。

  2. MustRunAsRange-如果不使用预分配的值,则需要定义最小值和最大值。使用最小值作为默认值。在整个允许范围内进行验证。

  3. MustRunAsNonRoot-要求以非零的runAsUser提交pod或在图像中定义USER指令。没有提供默认设置。

  4. RunAsAny-未提供默认值。允许指定任何runAsUser

有关更多信息,请查看official openshift docs

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...