Wie kann ich in Docker Dateien zwischen Containern austauschen und sie dann in einem Image speichern?
Ich möchte die Daten im freigegebenen Volume eines Containers für ein Image festschreiben. Ich kann es scheinbar nicht tun? Ich habe den Eindruck, dass dies in Docker vielleicht nicht möglich ist, aber das widerspricht der gesamten Philosophie, keine Daten auf dem Host zu belassen, sodass ein Teil von mir der Meinung ist, dass es einen Weg geben muss, dies zu tun.
1. TerminalStarten Sie einen Container in Terminal 1 mit einem Volume.
$ docker run -it -v /data ubuntu:14.10 /bin/bash
root@19fead4f6a68:/# echo "Hello Docker Volumes." > /data/foo.txt
2. Terminal Starten Sie einen zweiten Container in Terminal 2. Die Datei aus Container 1 ist dort, sodass alle Docker-Volumes funktionieren.
$ docker run -it --volumes-from 19fead4f6a68 ubuntu:14.10 /bin/bash
root@5c7cdbfc67d8:/# cat /data/foo.txt
Hello Docker Volumes.
3. Terminal Mein Verständnis ist, dass ich nur Diffs für Bilder festschreiben kann, also überprüfe ich, welche Diffs auf beiden Containern vorhanden sind. Aus irgendeinem bizarren Grund werden meine Änderungen nicht angezeigt! ??
$ docker diff 19fead4f6a68
A /data
$ docker diff 5c7cdbfc67d8
A /data
4. Zurück in Terminal 1Ich erstelle eine Datei außerhalb des Volume-Ordners
root@19fead4f6a68:/# echo "Docker you are a very strange beast...." > /var/beast.txt
5. Zurück in Terminal 3Wir können jetzt einige Änderungen vornehmen, obwohl ich ziemlich frustriert bin, da dies nicht die Daten des Volumens sind, die ich für die Freigabe mit meinem anderen Container benötigt habe.
$ docker diff 19fead4f6a68
A /data
C /var
A /var/beast.txt
Clearly das ist beabsichtigt. Hat jemand eine Idee, warum Docker mir nicht erlaubt, Volumendaten für ein Commit zu speichern? Gibt es überhaupt eine Möglichkeit, Dateien zwischen Containern auszutauschen und sie dann in einem Image zu speichern? Ich habe das Gefühl, es muss etwas geben, das mir fehlt? Insbesondere bis zum Ende des Datenaustauschs unter Vermeidung von Host-Abhängigkeiten.