Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker Openshift 4-Mkdir命令获取权限被拒绝错误_Docker_Openshift - Fatal编程技术网

Docker Openshift 4-Mkdir命令获取权限被拒绝错误

Docker Openshift 4-Mkdir命令获取权限被拒绝错误,docker,openshift,Docker,Openshift,我已经为未指定任何要运行的用户的映像设置了部署。当映像启动时,它尝试在/data/cache处创建目录,但遇到权限拒绝错误 我试图从pods中的终端创建目录,但遇到了相同的问题: $ whoami 1000910000 $ mkdir /data/cache mkdir: cannot create directory ‘/data/cache’: Permission denied 已找到,但它要求映像作为特定用户运行,并且我无法更改Dockerfile。是否有任何方法允许图像写入访问/数据

我已经为未指定任何要运行的用户的映像设置了部署。当映像启动时,它尝试在
/data/cache
处创建目录,但遇到权限拒绝错误

我试图从pods中的终端创建目录,但遇到了相同的问题:

$ whoami
1000910000
$ mkdir /data/cache
mkdir: cannot create directory ‘/data/cache’: Permission denied
已找到,但它要求映像作为特定用户运行,并且我无法更改Dockerfile。是否有任何方法允许图像写入访问
/数据


谢谢

如果您无法更改容器本身,则可以选择在此处安装
emptyDir
目录

像这样将其添加到部署中:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: example-deployment
  labels:
    app: example
spec:
...
    spec:
      containers:
      - name: example
        image: nginx:1.14.2
        ports:
        - containerPort: 80
        volumeMounts:
        - mountPath: /data/cache
          name: cache-volume
      volumes:
      - name: cache-volume
        emptyDir: {}

这是由于OpenShift如何创建/管理映像,因为每次部署时,它都会创建一个随机用户ID

您应该检查如何支持任意用户ID:

支持任意用户ID

默认情况下,OpenShift容器平台使用 任意分配的用户ID。这提供了额外的安全性 防止由于容器引擎而逃逸容器的进程 漏洞,从而在主机上实现升级权限 节点

对于支持以任意用户身份运行的映像,目录和 由映像中的进程写入的文件必须归 根组和可由该组读/写。待归档文件 已执行的还必须具有组执行权限

将以下内容添加到Dockerfile将设置目录和文件 允许根组中的用户在中访问它们的权限 建筑形象:

由于容器用户始终是根组的成员,因此 容器用户可以读写这些文件


所以,你真的应该试着按照这些规则弯曲它。

这应该行得通。另一个选项是使用特定的serviceaccount运行容器创建的POD,并将anyuid scc添加到此SA
RUN chgrp -R 0 /some/directory && \
    chmod -R g=u /some/directory