我想以非root用户身份在docker容器中装载卷。我正在使用以下(k8s.yaml)-
volumeMounts:
- name: volume-to-be-mounted
mountPath: /location
volumes:
- name: volume-to-be-mounted
hostPath:
path: path
type: DirectoryOrCreate
此卷作为根安装在容器内。但我想将其挂载为非root用户。有什么办法吗?我也可以使用https://docs.docker.com/storage/volumes/,但我也想在其他容器(在同一容器中)上安装相同的卷。
想到了一些解决方案,但不适合我的用例-
可能有效的解决方案,但我不知道怎么做-
答案 0 :(得分:1)
您可以考虑以root用户身份运行init容器。初始化容器和主容器共享相同的体积。从init容器更新该卷的所有权
答案 1 :(得分:0)
如果您使用的是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
答案 2 :(得分:0)
您还希望将相同的卷挂载到其他容器(在同一容器中)。
我不认为你可以做到。
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/