Ist es möglich, die Montage eines ISO-innerhalb eines docker-container?
Ich bin mit einem docker-container (basierend auf den offiziellen centos:6.4 Bild) zum erstellen einer ISO, die ich dann brauchen, zu montieren und zu überprüfen. Ich bin nicht in der Lage zu montieren die ISO mit:
sudo mount -o loop /path/to/iso /mnt
Gibt:
mount: Could not find any loop device. Maybe this kernel does not know
about the loop device? (If so, recompile or `modprobe loop'.)
Sieht es aus wie der kernel kompiliert wurde, ohne loop-device support. Ist es möglich, zu bauen docker-images, die Unterstützung loop-Geräte? Ich konnte nicht finden alle Informationen auf dieser, jedoch, Blick auf dieser thread es scheint, dass dies ein Dauerthema.
Frage ich mich, ob es ist ein Weg zur Umgehung dieser Einschränkung?
- Ich bezweifle, dass es der kernel. Es sieht mehr wie Ihre docker-container hat keine loop-Geräte in. Haben Sie versucht, mit
losetup
? - Hi, vielen Dank für Ihre Antwort. Können Sie mir ein bisschen mehr Informationen über dein Vorschlag? Die Beispiele auf der
losetup
manpage vermuten, dass die Schleife die Einträge in /dev vorhanden sind, die Sie in diesem Fall nicht (Inhalt/dev
:console full kmsg mapper null ptmx pts random shm stderr stdin stdout tty tty1 urandom zero
). Es sah aus wie mitdmsetup
könnte eine option sein, aber wieder, gibt es nicht viel Informationen darüber, wie dies gemacht werden würde. - Was bedeutet
losetup -f
geben Sie? - Gleich als ich aus dem mount-Befehl:
losetup: Could not find any loop device. Maybe this kernel does not know about the loop device? (If so, recompile or modprobe loop.)
- Was hat es zu tun, das außerhalb des Behälters? Es könnte einfach sein, dass der container Verbot es. Gleichen kernel in der container-als auch außerhalb, zu erinnern.
- Stimmt ja, ich muss ehrlich sein, ich habe nur das Spiel mit docker für ein paar Tage, so ich bin immer noch dabei meine Füße ein wenig. Montage Bilder von außerhalb des Containers ist in Ordnung (ich bin mit Fedora 20, mit der docker-io-package - version 0.7.6). Ich habe versucht Montage eine ISO mit einem privilegierten container von der "Basis" (Ubuntu -) Bild und das funktioniert gut, so wie Sie sagen, es muss eine Begrenzung der Bild. Ich werde schauen Sie sich um und sehen, ob es irgendeine info über das erstellen von Bildern mit loop-Unterstützung (wie der Ubuntu-Basis-image). Vielen Dank für Ihre Hilfe.
- Schlage vor, Sie überprüfen, was ist montiert auf
/dev
Aussehen mag, was ist montiert auf/dev
wenn Ihr Bild ist laufen nicht in einen container.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zum einbinden einer ISO-innerhalb eines Containers, benötigen Sie zwei Dinge:
Standardmäßig Andockfenster sperrt beide Dinge; das ist, warum erhalten Sie diese Fehlermeldung.
Die einfachste Lösung ist, starten Sie den Behälter in einem privilegierten Modus:
Eine präzise Lösung ist, Tauchen Sie nach unten in die Geräte cgroup-und container-Funktionen zu geben, die erforderlichen Berechtigungen verfügen.
Beachten Sie, dass Sie nicht ausführen privilegierter Operationen als Teil eines Dockerfile; also, wenn Sie brauchen, zu montieren, dass die ISO in ein Dockerfile, Sie werden nicht in der Lage, es zu tun.
Jedoch, ich empfehlen, dass Sie einen Blick auf Xorriso und speziell die osirrox - tool , das ermöglicht Ihnen das extrahieren von Dateien aus ISO-images wie würden Sie, extrahieren Sie eine tar-Datei, ohne jede Art von speziellen Zugang, z.B.:
osirrox
. Danke!Habe ich das Gefühl, das ist keine gute Lösung für mein Problem, aber das ist, was ich getan habe, für die Zeit, bis eine weitere gute Idee ist, präsentiert sich.
Mein container startet in bash, aus dieser Schale bin ich in der Lage, zum hinzufügen von loop-Geräten verwenden:
und jetzt habe ich loop-Geräte zur Verfügung, so bin ich in der Lage zu montieren ein ISO. Allerdings ist mir aufgefallen, dass die ersten verfügbaren loop-Gerät, für mich war
/dev/loop2
:dies impliziert, dass loop0 und schleife1 bereits im Einsatz sind, bestätigt wird dies:
- und dies ist der Grund, warum ich glaube, diese Lösung ist schlecht, von außerhalb des Behälters:
So wie es aussieht die ersten 2 loop-Geräte, die ich dem container zugeordnet loop0 und schleife1 außerhalb des Behälters, die ist, warum Sie waren nicht verfügbar für den Einsatz. Ich denke, es muss einen Weg, der die Einrichtung dieser Geräte mit devicemapper (die wird von docker, der aussieht), aber ich habe nicht in der Lage gewesen ist zu viel info auf dieses.
Vorerst diese Lösung für mich okay - ich werde nur müssen vorsichtig sein, daran zu erinnern, um
umount
das Bild, wenn ich fertig bin mit ihm.Ich bin mir bewusst, dass dies weit von einer vernünftigen Lösung, also wenn jemand kann kommen mit einer besseren plan-ich bin ganz Ohr.