In a pod can we have a single volume for two different containers.
Can we use single Volume mount in Pod for more than a single container?
1k Views Asked by Kishan Jr AtThere are 2 best solutions below
On
If you have two containers and you want to share data between them, you can do like below:
apiVersion: v1
kind: Pod
metadata:
name: production
spec:
containers:
- name: container1
image: image1
volumeMounts:
- name: storage
mountPath: /vol/data
- name: container2
image: image2
volumeMounts:
- name: storage
mountPath: /store/data
volumes:
- name: storage
emptyDir: {}
Here,
an emptyDir is used to share data in between two containers. Both containers has have volume.
So, if you want to share same data, you can mount same volume in two containers.
But, if you want to use single volume, and do not want to share data between two containers, you can use subPath
spec:
containers:
- name: container1
image: image1
volumeMounts:
- name: storage
mountPath: /vol/data
subPath: vol
- name: container2
image: image2
volumeMounts:
- name: storage
mountPath: /store/data
subPath: store
volumes:
- name: storage
emptyDir: {}
Here,
subPath specify a sub-path inside the referenced volume instead of its root. That means, two separate directory from your volume will be mounted in two containers.
In this example, /vol directory will be mounted in container1 container and /store from volume will be mounted in container2
Now, you data will not be conflicted and shared
Yes. It's common to share a volume between two containers mainly to communicate. Check out the below diagram.
Try this article1 article2