2014-10-21 7 views
6

Ich bin mit der folgenden Grunde Docker-Datei:Oracle auf Docker mit vorge gepumpt Daten

https://github.com/wnameless/docker-oracle-xe-11g/blob/master/Dockerfile

Ich las ein wenig darüber, wie ein Datum Volumne zur Einrichtung von dieser SO question und this blog, aber nicht sicher, wie um die Stücke zusammenzufügen.

Kurz gesagt, würde ich gerne die Oracle-Daten in einem Daten nur Docker Bild verwalten, wie es geht?

+0

gibt es irgendwelche 'VOLUME' Anweisungen in der Dockerfile für' wnameless/xe -Temp? – Thomasleveil

+1

Was hast du versucht und wo bist du? –

+0

Ihr Link zur SO-Frage verweist auf den offermann-blog – Bohne

Antwort

0

Allgemein gilt:

# Start data container 
docker run -d -v /dbdata --name dbdata -it ubuntu 

# Put oracale data in /dbdata some how 

# Start container with stabase and look for data at /dbdata 
docker run -d --volumes-from dbdata --name db -it ubuntu 
+0

Wie würden Sie die control.dbf-Dateien behandeln (was nach meinem Verständnis Orakel sagen wird, wo nach dbf-Dateien gesucht wird)? https://registry.hub.docker.com/u/alexeined/docker-oracle-xe-11g/ hardcodes es in der DockerFile. Ich weiß, wie man --volumes-from tut, um Tablespaces dort zu speichern ... aber da control.dbf im Orakel-Container gespeichert ist, scheint es, dass die Informationen beim Neustart des Containers verloren gehen. –

+0

Können sie auch nicht von einem Volumen montiert werden? Wenn nicht, können Sie die neue Exec-Funktion in Docker 1 verwenden.3, um sie zu aktualisieren, nachdem ein Container auftaucht. –

2

Ich habe versucht, die Datendateien Kartierung und schnelle Recovery-Verzeichnisse in meinem oracle xe Container. Nachdem ich die Dateien verloren hatte, änderte ich meine Meinung ... also sollten Sie bei diesem Ansatz sehr vorsichtig sein und verstehen, wie docker diese Bereiche unter allen Operationen verwaltet.

Ich fand zum Beispiel, dass wenn Sie alte Container löschen, der Inhalt der zugeordneten Verzeichnisse gelöscht wird, auch wenn sie auf etwas außerhalb des Andocksystembereichs (/ var/lib/docker) zugeordnet sind. Sie können dies vermeiden, indem Sie die Behälter aufbewahren und neu starten. Wenn Sie jedoch ein neues Image versionieren und erstellen möchten, müssen Sie diese Dateien sichern.

Oracle ID ist auch die Dateien selbst (Prüfsumme oder Inode # oder etwas) und beschwert sich über sie beim Start .... Ich habe nicht untersucht, das Ausmaß dieses Problems oder auch wenn es tatsächlich ein Problem gibt.

Ich habe beschlossen, keine dieser Dateien/Verzeichnisse zuzuordnen und plane, Datenpumpe oder was auch immer zu verwenden, um die Daten zu erhalten, bis ich einen besseren Griff auf alles, was passieren kann, bekomme.

So aktualisiere ich die Daten und die Version des Bildes ... bis zur Verwahrung an den Repo drängen

+0

Danke. Es scheint, dass ich nach dem Tagging kein Bild mit aktualisierten Daten starten kann. Vergeben Sie einfach den Container und versionieren Sie das Image daraus? –

+0

Ja. Und ich gebe ihm ein Etikett, das seinen besonderen Status anzeigt. – Rondo

4

I Volumen für db Daten montieren habe erkannt. Hier ist meine Gabel:

  • Größe des Bildes reduziert von 3.8G auf 825Mb
  • Database Initialisierung aus der Bildaufbauphase bewegte. Jetzt wird die Datenbank beim Start des Containers initialisiert, ohne dass Datenbankdateien gemountet werden
  • Medienwiederverwendungsunterstützung außerhalb des Containers. Hinzugefügt ordnungsgemäßes Herunterfahren auf containeer
  • entfernt sshd stoppen

Sie können hier überprüfen:

https://registry.hub.docker.com/u/sath89/oracle-xe-11g

https://github.com/MaksymBilenko/docker-oracle-xe-11g

Verwandte Themen