mikrocontroller.net

Forum: PC-Programmierung Docker Mount im Container


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Maik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich baue gerade einen Container (Dockerfile)

Nur ein Volume/Ordner für persistente Daten soll eingebunden werden.

Aber an 3 Orten im File-System sollen persistente Daten liegen, für die 
Programme die dann im Container laufen.

Mein Plan: 2 Mounts in das eingebundene Volume, einhängen vor der 
Programmausführung. Final dann 3 persistente Speicherorte.

Problem:

Alle run mount-Befehle im Dockefile schlagen fehl (permission fehler)
Alle mount-Befehle im startscript des Containers schlagen fehl (ich 
dachte könnte ja auch da der mount erstellt werden, auch permission 
fehler)


Daher die Frage geht das Überhaupt ?

Also gehen generell Mounts im Container, oder Mounts in Volumes?

MfG

Autor: KitKat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
draussen mounten, z.b. /data/eins /data/zwei /data/drei.

im Dockerfile nix machen (ausser evtl. eine "Volume"-Angabe)

im docker-compose.yml (oder in der docker cmdline beim Starten)
per "volumes" oder "-v" das host-verzeichnis in den Container biegen.

also

docker run -v /data/eins:/var/lib/somewhere -v 
/data/drei:/home/irgendwer irgendwas

dann hast du innerhalb des laufenden Containers Zugriff auf deine 
Storages, an den Pfaden die du angegeben hast.

Autor: Maik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ja jeden Ordner von draußen rein mounten funktioniert ja, aber

ich möchte nur einen Ordner rein-mounten und nicht 3 oder 5 oder 7. Weil 
es könnten noch mehr Stellen in Unter-Verzeichnissen geben an denen die 
Applikation im Container persistente Daten benötigt/erzeugt.


Ausserdem soll der Container in Kubernetes laufen und dann muss ich ja 
für jedes Volume noch einen Volume Claim und ein Volume erstellen. 
Schlanker wäre hier toll.
Diese Volumes dürfen sich "glaube ich" auch nicht überlagern im 
Speicher.


Und die Nutzerdaten (jeder Container bedient einen Nutzer) sind dann 
auch verstreut auf die 3-7 Volumes. Auch nicht toll.

So sollte es sein:


Verzeichnisstruktur im persistenten Volume (aktuell in minikube)

/PODNAME1/userdata/log
/PODNAME1/userdata/bilder
/PODNAME1/userdata/cfg

/PODNAME2/userdata/log
/PODNAME2/userdata/bilder
/PODNAME2/userdata/cfg


Verzeichnisstruktur im Container = POD
/userdata/log
/www/user/bilder
/app/cfg


Im Dockerfile nur ein Volume "/userdata" definieren,
einbinden vom persistenten Volume /PODNAMEX/userdata

dann war gedacht:
mount --bind /userdata/bilder /www/user/bilder
mount --bind /userdata/cfg /app/cfg

Mounts im Dockerfile oder beim Starten des Containers - Permission fehlt 
- das ist dass Problem.

MfG

Autor: Εrnst B. (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Maik schrieb:
> Mounts im Dockerfile oder

Macht keinen Sinn. Das Dockerfile ist die "Bauanleitung" für den 
Container, aus dem build wird am Ende nur das Dateisystem 
weiterverwendet, keine aktiven Mounts o.Ä.


>  beim Starten des Containers - Permission fehlt
> - das ist dass Problem.

Kannst du per "cap_add CAP_SYS_ADMIN" oder gleich "privileged container" 
umgehen.
Halte ich für eine extrem unschöne Frickellösung.

Einfache symlinks gehen nicht? Die könntest du auch schon im Dockerfile 
vor-anlegen.

Oder versuch die Applikations-Configs in deinem Container anzupassen, 
dass die mit deinen Pfaden arbeiten.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.