【问题标题】:Mount volumes as non root user in docker container在 docker 容器中以非 root 用户身份挂载卷
【发布时间】:2019-08-19 01:05:00
【问题描述】:

我想以非 root 用户身份在 docker 容器中挂载一个卷。我正在使用以下(k8s.yaml)-

volumeMounts:
        - name: volume-to-be-mounted
          mountPath: /location
volumes:
        - name:  volume-to-be-mounted
          hostPath:
            path: path
            type: DirectoryOrCreate

此卷以 root 身份安装在容器内。但我想以非 root 身份安装它。有没有办法做到这一点?我也可以使用https://docs.docker.com/storage/volumes/,但我也想在其他容器(在同一个 pod)上安装相同的卷。

想到但不适合我的用例的一些解决方案 -

  1. 在入口点更改目录的权限(不可行,因为入口点将以非 root 用户身份运行。)
  2. https://stackoverflow.com/a/39576814/9081810 我正在使用 k8s.yaml 来指定我的要求。我不知道这个解决方案如何适应。

可行但我不知道该怎么做的可能解决方案 -

  1. 安装卷时将权限设置为 777。

【问题讨论】:

  • 我希望 ConfigMap 内容是只读的(尽管在文档中找不到这样的声明)。只要活跃用户可以读取那里的文件,那么用户拥有这些文件真的很重要吗?
  • 我想写在那个特定的位置。将从问题中删除配置映射。

标签: docker kubernetes


【解决方案1】:

您也想在其他容器(在同一个 pod 中)上挂载相同的卷。
我不认为你能做到这一点。
pod的定义是:A pod (as in a pod of whales or pea pod) is a group of one or more containers (such as Docker containers), with shared storage/network, and a specification for how to run the containers.
更多详情:https://kubernetes.io/docs/concepts/workloads/pods/pod/

【讨论】:

    【解决方案2】:

    如果您使用的是 kubernetes,您可以使用 security context 并设置 fsGroup 值。

    文档中的示例

    apiVersion: v1
    kind: Pod
    metadata:
      name: security-context-demo
    spec:
      securityContext:
        runAsUser: 1000
        fsGroup: 2000
      volumes:
      - name: sec-ctx-vol
        emptyDir: {}
      containers:
      - name: sec-ctx-demo
        image: gcr.io/google-samples/node-hello:1.0
        volumeMounts:
        - name: sec-ctx-vol
          mountPath: /data/demo
        securityContext:
          allowPrivilegeEscalation: false
    
    

    如果您只是使用 docker ... 那么自 2013 年以来就有一个 open issue

    【讨论】:

      【解决方案3】:

      您可以考虑以 root 用户身份运行 init 容器。让 init 容器和主容器共享相同的卷。从初始化容器更新卷的所有权

      【讨论】:

      • 从 init 容器更改所有权将仅反映在 init 容器中,而不反映在应用程序容器中。我试过 - chown -R user:user 文件夹
      • 您确定卷在两个容器之间共享吗?
      猜你喜欢
      • 1970-01-01
      • 2019-01-29
      • 1970-01-01
      • 2020-12-10
      • 2020-12-28
      • 2021-12-03
      • 2018-06-18
      • 2015-07-15
      • 1970-01-01
      相关资源
      最近更新 更多