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?

  • Mike
    link
    fedilink
    21 year 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

    • @[email protected]
      link
      fedilink
      English
      21 year 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
      

      🤷

      • Mike
        link
        fedilink
        11 year 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.

    • @[email protected]OP
      link
      fedilink
      English
      11 year 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!