USB-SSD in docker zur laufzeit einbinden

ZuseZ3

Lt. Commander
Registriert
Jan. 2014
Beiträge
1.659
Ich habe den Fall, dass ich Zugriff auf einen Docker container auf einem PC in einem anderen Netzwerk haben werde.
In diesem bearbeite ich Daten, die ich auf einer von zwei externen SSD's speichern moechte.
Dabei wird immer nur eine eingesteckt sein und ich moechte Bilder automatisch speichern, so lange eine SSD eingesteckt ist.
Nun zu meinem Problem, dem einbinden der SSD.
Ich werde in Zukunft keinen Zugriff auf den Host mehr haben, dh. rechner oder Docker container neustarten ist keine Loesung.

Zum testen fuehre ich auf dem Host folgenden Befehl aus und versuche dann die SSD zu mounten:
docker run --rm -it --privileged ubuntu bash

Stecke ich eine SSD ein, dann wird sie auf dem Host korrekt gemountet.
Im Docker passiert folgendes:

Unter lsblk taucht sie auf (sdb als disk, sdb1 als part)
unter /sys/block erscheint /sdb

unter /dev/ erscheint sdb bzw. sdb1 nicht
mit fdisk -l taucht sdbX nicht auf
unter /proc/mounts taucht sdbX nicht auf


wie mounte ich dieses laufwerk nun korrekt? mount /dev/sdbx /tmp/mount_dir funktioniert natuerlich nicht
Docker container neustarten funktioniert, ist aber keine dauerhafte loesung.

Bitte fragt nach, falls ihr weitere Infos benoetigt.
 
Zuletzt bearbeitet:
@snaxilian Du meinst ueber eine entsprechende Regel auf dem Host?
Das ist leider nicht moeglich. Das ganze muss vollstaendig innerhalb des Docker containers laufen, auf dem Host kann ich nichts veraendern. Damit das ganze grosflaechiger auf verschiedene Computer ausgerollt werden kann.

Was ich anpassen kann sind die Docker scripte, inklusive docker-compose , .yml und so weiter.

It will only work if /proc/mounts correctly lists the block device node (which, as we saw above, is not necessarily true).
Dies ist leider nicht der Fall.
 
Zuletzt bearbeitet:
Eine USB-SSD und "verschiedene Computer" passt nicht so ganz zusammen und ja, ich meine natürlich über eine Regel auf dem Docker-Host.

So etwas aus einem Container heraus zu ändern widerspricht massiv zwei wichtigen und essentiellen Merkmalen von Docker:
1) Docker limitiert (und abstrahiert) einen oder mehrere Prozesse vom Host und isoliert diese
2) Docker Container bekommen ihre gesamte Config, Volumes, etc beim Start mitgegeben und sind danach unveränderlich. Ändert sich etwas, wird der Container gestoppt, ggf. gelöscht und mit neuer Config, Volumes, etc gestartet.

Du verbindest dich ja auch nicht in einen Container und machst ein apt update && apt upgrade sondern baust oder lädst das neue Image und startest den Container neu.

Ansonsten wie gesagt meinem Link mal folgen und ausführlich lesen aber ich bezweifel, dass es alles aus dem Container heraus klappt ohne Interaktion mit dem Host
 
Zuletzt bearbeitet:
Erstmal Danke @snaxilian fuer die ausfuehrliche Antwort.
Warum passen die USB-SSDs und verschiedene Computer nicht zusammen?
Aktuell ist das aber auch noch nicht besonders wichtig, da wir mit einem PC und 2 SSDs vom selben Typ anfangen.

Ich starte docker im privileged modus, falls du das uebersehen hast.
Spaeter werden wir das alternativ ueber entsprechende Rechte loesen, das wird schon.
Und zuletzt wird sdb1 im Host bereits automatisch gemountet, das muss ich nicht noch einstellen.
ZuseZ3 schrieb:
Stecke ich eine SSD ein, dann wird sie auf dem Host korrekt gemountet.

Damit koennen wir den Teil ueberspringen.
 
Zurück
Oben