die/wir können sich/uns nicht einigen, wo nun die daten hin sollen:
nextcloud gmbh
linuxserver .io
und das ist der pfad im container. der könnte immer gleich sein.
grundsÀtzlich ist das vollkommen pumpe. nur muss man hier im forum jedesmal umdenken und aufpassen.
ne. andersrum denken.
lvmâs sind quasi die virtualisierung von festplatten. du hast festplatten und deren partitionen, die ein lvm zu einer logischen partition zusammenfasst, die du an einem mountpoint auf deinem host mountest. also /dev/sdb1 â /mnt/nextcloud-data. â steht symbolisch fĂŒr den lvm. wenn der platz nicht mehr ausreicht, fĂŒgst du noch eine zweite partition hinzu. also (/dev/sdb1 + /dev/sdc1) â /mnt/nextcloud-data. das geht dann on-the-fly. vorher aber bitte noch ein bisschen zu lvm und raid lesen. das sind linux themen. haben nix mit nextcloud und docker zu tun.
im prinzip wie folgt:
also du liest die beschreibung von dem images, welches du benutzt, auf hub.docker.com. dort findest du obige zeilen. und so was wie:
$ docker run -d \
-v nextcloud:/var/www/html \
-v apps:/var/www/html/custom_apps \
-v config:/var/www/html/config \
-v data:/var/www/html/data \
-v theme:/var/www/html/themes/<YOUR_CUSTOM_THEME> \
nextcloud
das -v
steht fĂŒr --volume
und liest sich wie folgt: links vom :
steht das volume name bzw. der verzeichnispfad auf dem host, rechts der pfad, wo im container die daten erscheinen sollen. links muss man noch wissen, wenn der pfad absolut ist, also /mnt/nextcloud-data
, dann wird genau dieser pfad auf dem host genutzt. wenn dort nur data
ohne fĂŒhrendes /
steht, wird von docker ein named volume
angelegt. das ist aber auch ânurâ ein pfad unter /var/lib/docker/volumes/...
(siehe oben, screenshots mountpoint). (*)
ein container prozess âsiehtâ jetzt alle dateien, die in dem image sind - die werden auch irgendwo unter /var/lib/docker ausgepackt - plus alle volumes die du mit -v
angibst.
also:
- du mountest deine externe festplatte mit ubuntu mitteln an einen mountpoint.
/mnt/nextcloud-data
mit oder ohne lvm.
- du legst mit portainer einen neuen container an, der
/mnt/nextcloud-data
als volume nach /var/www/html/data
im container bindet.
wenn du jetzt eine fehlermeldung bekommst, musst du die ownership von /mnt/nextcloud-data
noch richtig setzen. du musst die uid des webserver users des docker image ermitteln (docker exec -u www-data nextcloud id
) und sudo chown <uid> /mnt/nextcloud-data
ausfĂŒhren. (nicht einfach sudo chown www-data:www-data ...
siehe unten. In portainer kannst du die âcontainer consoleâ benutzen, um die id des users zu ermitteln.
ein wort der warnung: du siehst zwar jetzt in /mnt/nextcloud-data
deine daten bzw. die nextcloud datenstruktur. aber dieser ordner âgehörtâ jetzt docker und dem nextcloud im container. wenn du mit ls -l /mnt/nextcloud-data
schaust, siehst du (fast) genau das selbe, wie mit docker exec nextcloud ls -l /var/www/html/data
den inhalt anschaust. höchstwahrscheinlich wirst du feststellen, dass die dateien im container dem user www-data gehören, auf dem host steht dort aber nur eine ânummerâ. jetzt bloĂ nicht der versuchung verfallen und da mal aufrĂ€umen. was da genau passiert, muss du verstanden haben, wenn du an nextcloud vorbei auf die daten in /mnt/nextcloud-data
direkt zugreifen willst.
(*) docker legt auch selber volumes an. wenn der image erzeuger, dass so vorgesehen hat. die verschwinden aber mit dem container. bzw. man muss, wenn man mit container spielt und immer wieder welche löscht, ab und an mal schauen, ob nicht verwaiste volumes rumliegen. und ein volume ist keine âbesondere dateiâ, wie bei virtualisierern wie vmware und/oder virtualbox. es ist ânurâ der pfad zu dem verzeichnis.
p.s.: man könnte auch einfach (**) die externe festplatte komplett nach /var/lib/docker mounten. dann liegt die gesamte âdocker weltâ auf der externen festplatte. du legst mit â-v data:/var/www/html/dataâ ein named volume an und docker kĂŒmmert sich um alles.
dann liegt aber auch deine datenbank auf diese externen festplatte. wenn das jetzt ein externes nvme laufwerk ist, fein. wenn das eine âlahmeâ NAS HDD ist, immer noch fine, aber halt langsamer.
und wenn die hdd mal nur noch komische gerÀusche macht, ist ebenfalls die gesamte docker welt futsch.
zum thema backup findest du hier im forum einige anleitungen.
(**) du musst natĂŒrlich docker stoppen, die bestehenden dateien unter /var/lib/docker sichern, mounten und die dateien wieder zurĂŒckspielen. (oder /var/lib/docker in /var/lib/docker.old umbennen.)