我想以非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/,但我想在同一个容器(在同一个容器中)安装相同的容量。
我想到的一些解决方案但不适合我的用例 -
可能的解决方案可以工作,但我不知道如何做 -
您可以考虑以root用户身份运行init容器。让init容器和主容器共享相同的卷。从init容器更新卷的所有权
如果你正在使用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
如果你只是使用码头......那么自2013年以来就有一个open issue
您还希望将相同的卷安装在其他容器(在同一个窗格中)上。
我认为你不能做到这一点。
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/