docker-volume-netshare icon indicating copy to clipboard operation
docker-volume-netshare copied to clipboard

create subfolders for named volumes within the shared location

Open ender74 opened this issue 7 years ago • 6 comments

Right now, all the data for a named volume is written to the base directory of the share. Taking nfs for example. I do have an NFS share /export on my nfshost. Then running this:

docker volume create -d nfs --name data1 -o share=nfshost:/export
docker volume create -d nfs --name data2 -o share=nfshost:/export

will create two different named volumes (data1, data2). The data for both volumes will be stored in the same shared folder though (/export). The result is, that changes in one named volume can overwrite the data for the other too. To resolve such possible name clashes with the current version, I would need to define two different NFS shares /export1 and /export2. With many named volumes, this leads to many shares and greater administrative effort.

Proposal:

I propose to change the meaning of the share folder to be the root of a volume set (as suggested by @eesprit here: https://github.com/ContainX/docker-volume-netshare/issues/52). This would mean, that for each named volume a subdirectory with the same name as the volume is created and all data stored there. For my example, this would lead to the following folder structure:

/export

  • /data1
  • /data2

Thus, the files for both named volumes are separated and I only have to create one NFS share. The same logic should be applied for cifs and probably efs.

It would be useful to define a new option to enable / disable this feature. If the option was named create, than the subfolders will only be created when -o create=yes is set. With -o create=no, the current behaviour remains and all files are stored within the root folder of the share. To be backward compatible, the default value for the create option could be no.

ender74 avatar Sep 07 '16 18:09 ender74

I like this and feel it adds more smarts to the driver and flexibility. I'm going to do some refactoring to support this and will make the next major upcoming release 1.0 to introduce this change.

gondor avatar Sep 12 '16 06:09 gondor

strange, I thought this would also work, as long as the directory data1 exists in the proper location:

docker volume create -d nfs --name data1 -o share=nfshost:/export/data1

manast avatar Sep 15 '16 08:09 manast

@manast @ender74 This feature has been created (only for NFS mounts). See example in latest release. It uses the create=true option as proposed.

https://github.com/ContainX/docker-volume-netshare/releases/tag/v0.30

gondor avatar Oct 04 '16 05:10 gondor

Is this possible to do with a docker compose file? I tried doing this, but doesn't seem to work: volumes: nextcloud: driver: nfs driver_opts: share: 10.21.21.3:/data create: "true" nextcloud: image: nextcloud volumes: - nextcloud:/var/www/html/data:nocopy volume_driver: nfs depends_on: - mariadb

cardinalfan1 avatar Aug 03 '17 07:08 cardinalfan1

Is this working for EFS volumes?

ryanmickler avatar Nov 21 '17 22:11 ryanmickler

@cardinalfan1 I'd really like this ability in compose as well. Has anyone got that working or is this a current limitation?

joeknock90 avatar Jun 04 '18 15:06 joeknock90