我的docker映像的工作目录被设置为“/opt”,它将包含jar文件和配置文件等。我试图在k8s中挂载它的pvc,但发现pvc将覆盖/opt目录。有没有办法在非空的docker映像中挂载该目录,谢谢。
7tofc5zh1#
当PVC装载到目录时,它将覆盖您指定的目录,而不是添加新文件。对于您的情况,当PVC装载时,目录“/opt“将被替换。要防止这种情况,您需要在/opt目录中创建一个新目录,或者您可以将PVC装载到当前目录以外的其他目录。
/opt
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”目录中已有的任何文件都不会被覆盖。否则:
my-pvc
mountOptions: - path: /mnt
这会将PVC装载到/mnt目录而不是/opt,因此/opt中的数据不会被覆盖。这个blog by Iman Tumorang将帮助您参考。
/mnt
avwztpqn2#
如果Docker映像的/opt目录中存在任何文件,则在将PVC装载到该目录时,PVC的内容将覆盖这些文件。要避免这种情况,您可能希望在container启动期间将文件从/opt目录复制到/opt内的子目录,然后将PVC装载到父目录。
2条答案
按热度按时间7tofc5zh1#
当PVC装载到目录时,它将覆盖您指定的目录,而不是添加新文件。对于您的情况,当PVC装载时,目录“
/opt
“将被替换。要防止这种情况,您需要在/opt
目录中创建一个新目录,或者您可以将PVC装载到当前目录以外的其他目录。此YAML将在“
/opt
”目录中创建一个名为“my-pvc
”的新目录,并将PVC装载到该目录中。“/opt
”目录中已有的任何文件都不会被覆盖。否则:
这会将PVC装载到
/mnt
目录而不是/opt
,因此/opt
中的数据不会被覆盖。这个blog by Iman Tumorang将帮助您参考。
avwztpqn2#
如果Docker映像的
/opt
目录中存在任何文件,则在将PVC装载到该目录时,PVC的内容将覆盖这些文件。要避免这种情况,您可能希望在container启动期间将文件从/opt
目录复制到/opt
内的子目录,然后将PVC装载到父目录。