2016-08-18 4 views
0

Ich baue ein Docker-Bild mit einer SQLLight-Datenbank mit Jenkins und ich glaube, dass ich die Datenbank aus der Dockerfile erstellen und auf einem Datenträger speichern möchte, damit ich das Volume separat exportieren kann. Ich beginne den Build als: docker build -t FOO . aber wenn ich die Volumendaten zu extrahieren:Wie bekomme ich Docker-Volumes vom neu erstellten Image?

docker run --rm --volumes-from FOO -v $(pwd):/backup busybox tar cvf /backup/backup.tar /opt/webapp` 

ich den Fehler: No such container: FOO

Das macht natürlich Sinn, weil FOO kein Container ist es ein Bild ist. Aber wie bekomme ich eine Container-ID? Ich kann nicht lesen, was auch immer Docker ausgibt, weil ich Batch in einem Jenkins-Build bin.

Ich habe das Gefühl, dass ich in die falsche Richtung gehe. Aber was ist der richtige Weg?

+0

Sie möchten das Bild oder die Daten, die von einem Container dieses Bildes generiert werden, extrahieren? – CMPS

+0

Ich möchte die Daten des in der Dockerfile – jonalv

Antwort

1

Sie benötigen einen Container auf dem FOO Bild basiert auszuführen:

docker run -d --name BAR FOO 

Und dann können Sie die Volumes zugreifen:

docker run --rm --volumes-from BAR ... 
+0

erzeugten Volumes extrahieren Ich denke, ich sollte 'Docker Stop BAR' auch tun. Scheint unordentlich, einen Container zu starten und dann sofort zu stoppen. – jonalv

+0

Hängt vom Container ab. Wenn kein langer Prozess läuft, wird der Container sofort gestoppt. – Martin

1

Führen Sie den Container, den Sie sichern möchten und tun das Backup direkt in diesem Container (ändern Sie Ihren Einstiegspunkt in etwas wie/bin/sh, wenn es mit --entrypoint /bin/sh modifiziert wurde):

docker run --rm -v $(pwd):/backup FOO tar cvf /backup/backup.tar /opt/webapp 

Oder wenn Sie Ihr Backup in einem anderen Container (z. Backup-Dienstprogramme sind nicht enthalten), Sie müssen nur den FOO-Container erstellen, nicht ausführen:

docker create --name foo-vol FOO 
docker run --rm --volumes-from foo-vol -v $(pwd):/backup \ 
    busybox tar cvf /backup/backup.tar /opt/webapp 
docker rm -v foo-vol 
Verwandte Themen