Loading...
16-09-2023

Momenteel als je zoekt naar het instellen van een disk quota voor een docker volume, via docker compose, kom ik tot nu toe alleen uit op een tmpfs. Zo'n volume is niet persistent, waardoor bij een herstart alle data weg is. Handig voor tempfiles, maar verder eigenlijk niet.

De enige oplossing die ik tot nu gevonden heb, is het gebruik van een disk image. Dit lijkt goed te werken. De image wordt namelijk via mount aan het locale filesystem geknoopt. Hierdoor kan je ook makkelijk bij de bestanden komen, voor bijvoorbeeld de backup.

Stap voor stap:

  1. Maak een disk image aan van 5 Gb. Ik plaats deze in de data directory bij de docker-compose.yml file:
dd if=/dev/zero of="./cms_data.img" bs=5G count=1
  1. maak een filesystem aan in het image:
mkfs.ext4 "./cms_data.img"
  1. Om ervoor te zorgen dat docker erbij kan komen, moet de image gemount zijn. Tot zover heb ik niets constructiefs gevonden om dit rechtstreeks via de compose file te doen, dus ik laat hem via /etc/fstab bij opstart mounten. Uiteraard is het handig om dit eerst te testen:
mkdir cms_volume
mount ./cms_data.img ./cms_volume
ls cms_volume/
umount ./cms_volume

als dit werkt, dan voeg ik hem toe aan fstab (Let op dat de directory waar deze gemount wordt moet bestaan).

{pad naar compose}/data/cms_data.img {pad naar compose}/data/cms_volume     ext4    rw,relatime     0       0
  1. pas de docker-compose.yml file aan zodat hij het locale pad gebruikt:
services:
  cms:
    env_file:
     - ./docker-compose.env
    ...
    volumes:
     - ${DOCKER_DATAPATH}/cms_volume:/opt/data
  • Docker
  • Linux
  • Quota