英文:
k8s volume mount overwrite
问题
Docker镜像的工作目录已设置为"/opt",其中包含jar文件和配置文件等。我尝试在K8s中挂载它到PVC,但发现PVC会覆盖/opt目录。是否有一种方法可以将非空的Docker镜像目录挂载?谢谢。
英文:
The work directory of my docker image is set to "/opt",and it will contain the jar file and config files,etc. I am trying to mount it pvc in k8s, but find the pvc will overwrite the /opt directory.Is there any way to mount the directory in docker image which is not empty , Thanks.
答案1
得分: 1
当一个永久卷声明(PVC)被挂载到一个目录时,它会覆盖您指定的目录,而不是添加新文件。对于您的情况,当PVC被挂载时,目录“/opt
”将被替换。为了防止这种情况发生,您需要在/opt
目录内创建一个新目录,或者您可以将PVC挂载到与当前目录不同的目录中。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: standard
volumeMode: Filesystem
volumeName: my-pvc
mountPath: "/opt/my-pvc"
这个YAML将在/opt
目录内创建一个名为'my-pvc
'的新目录,并将PVC挂载到它。已经存在于/opt
目录中的任何文件不会被覆盖。
或者:
mountOptions:
- path: /mnt
这将把PVC挂载到/mnt
目录,而不是/opt
,因此/opt
中的数据不会被覆盖。
这个Iman Tumorang的博客将帮助您进行参考。
英文:
When a PVC is mounted to a directory, instead of adding a new file it will overwrite the directory you specify. For your case when the PVC is mounted the directory “/opt
” will be replaced. To prevent this you need to create a new directory within the /opt
directory or you can mount PVC to a different directory other than the current directory.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: standard
volumeMode: Filesystem
volumeName: my-pvc
mountPath: "/opt/my-pvc"
This YAML will create a new directory named 'my-pvc
' within the '/opt
' directory and mount the PVC to it. Any files that are already in the '/opt
' directory will not be overwritten.
Or else:
mountOptions:
- path: /mnt
This will mount the PVC to the /mnt
directory instead of /opt
, so the data in /opt
will not be overwritten.
This blog by Iman Tumorang will help you for reference.
答案2
得分: 0
如果Docker镜像的/opt
目录中存在任何文件,它们将在将PVC挂载到该目录时被覆盖。为了避免这种情况,您可能希望在容器启动期间将/opt
目录中的文件复制到/opt
内的子目录中,然后将PVC挂载到父目录。
英文:
there are any files in the /opt
directory in the Docker image, they will be overridden by the contents of the PVC when the PVC is mounted to the directory. To avoid this, you may want to copy the files from the /opt
directory to a subdirectory within /opt
during container startup, and then mount the PVC to the parent directory.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论