20
submitted 8 months ago by Pete90@feddit.de to c/selfhosted@lemmy.world

Hei there. I've read that it's best practice to use docker volumes to store persistent container data (such as config, files) instead of using bindmount. So far, I've only used the latter and would like to change this.

From what I've read, all volumes are stored in var/lib/docker/volumes. I also understood, that a volume is basically a subdirectory in that path.

I'd like to keep things organized and would like the volumes of my containers to be stored in subdirectories for each stack in docker compose, e.g.

volumes/arr/qbit /arr/gluetun /nextcloud/nextcloud /nextcloud/database

Is this possible using compose?

Another noob question: is there any disadvantage to using the default network docker creates for each stack/container?

top 13 comments
sorted by: hot top controversial new old
[-] krolden@lemmy.ml 9 points 8 months ago

Just do bind mounts unless you really need docker volumes for something

[-] Pete90@feddit.de 1 points 8 months ago

Will do, thanks!

[-] ShortN0te@lemmy.ml 5 points 8 months ago

Never heard that bindmounts are bad practice. Never had problems with it. What did you read?

If it ain't broken ...

[-] Pete90@feddit.de 1 points 8 months ago* (last edited 8 months ago)

Yeah, that seems to be the gist of it. I've seen several people say that they prefer volumes as they are managed by docker and therefore easier to migrate / backup. Since I plan on moving to different hardware in the near future, I figured why not.

Also something about permissions, though I never had any problems with it. So as you said, I'm sticking with bind mounts for now.

Also I don't have a clue what I'm doing at least 50 percent of the time and just follow guides. That's why I wanted some clarification on that :)

[-] mhzawadi@lemmy.horwood.cloud 4 points 8 months ago

If you have data else where on your server, you can use the options to volume to direct the mount there

driver: local driver_opts: type: none o: bind device: '/your/current/data'

Also reading the compose spec will help

[-] Pete90@feddit.de 1 points 8 months ago

Thanks, this looks like it'll do the job. I have not a lot of knowledge, so the specs are often a bit technical for me. I'll give it a go, thanks!

[-] ErwinLottemann@feddit.de 4 points 8 months ago

that is using bin mounts again. and i don't get why this is discouraged, i actualy do like to know where my data is stored and don't want to spin up a container that backs up using the volumes managed by docker. at that point you are using bind mounts again anyway.

regarding your original question, i don't think it is possible (or even useful) to tell docker where to store the volumes for each compose stack because you are not supposed to access the from the filesystem directly anyway.

just continue using bind mounts

[-] TheHolm@aussie.zone 4 points 8 months ago

Do not access volumes directly on filesystem. path may change. If you need access data on a volume just spawn temporary container an mount that volume.

[-] ad_on_is@lemmy.world 2 points 8 months ago

tbh...I hate volumes. I prefer having my docker data in my home folder, which I do regularly back up

[-] itmike@fikaverse.club 2 points 8 months ago

@Pete90 There is plugins you can use to tell docker where your volumes are. Something like this works for local directories:

Docker will create a _data directory as usual.

volumes:
web_data:
db_data:
driver: local # Define the driver and options under the volume name
driver_opts:
type: none
device: /data/myservice/db_data
o: bind

[-] ErwinLottemann@feddit.de 2 points 8 months ago

this is a bind mount, defining them like this in a compose file is for when multiple containers share volumes, you just need to write the name of the volume instead of the path, but...

 - database:/var/lib/mysql

is not that much less than

 - ./database:/var/lib/mysql

🤷

[-] itmike@fikaverse.club 1 points 8 months ago

@ErwinLottemann I like named volumes in my compose files better thou, keep them organised under the volume section and manageable with docker-cli if needed.

[-] Pete90@feddit.de 1 points 8 months ago

Ah, so I basically specify with driver and it's option(s) where to save the volume. I'll play around with it for a bit and see where it goes. Thanks!

this post was submitted on 15 Oct 2023
20 points (91.7% liked)

Selfhosted

37809 readers
534 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 1 year ago
MODERATORS