2014-10-21 10 views
6

Sto usando il seguente file di base finestra mobile:Oracle su Docker con pre-pompato dati

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

ho letto un po 'su come impostare un Volumne dati da questo SO question e this blog, ma non sapete come per montare i pezzi insieme.

In breve, mi piacerebbe gestire i dati dell'oracolo in un'immagine Docker solo dati, come si fa?

+0

ci sono delle istruzioni 'volumico nel Dockerfile per' wnameless/xe -temp'? – Thomasleveil

+1

Cosa hai provato e dove stai? –

+0

il tuo link ai punti interrogativi SO al blog di offermann – Bohne

risposta

0

In generale:

# 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

Come gestiresti i file control.dbf (che a mio avviso dirà a oracle dove cercare i file dbf)? https://registry.hub.docker.com/u/alexeiled/docker-oracle-xe-11g/ hardcodes nel DockerFile. So come fare --volumes-from per memorizzare i tablespace lì ... ma dal momento che control.dbf è memorizzato nel contenitore Oracle sembra che le informazioni andranno perse al riavvio di un container. –

+0

Possono anche non essere montati da un volume? In caso contrario, è possibile utilizzare la nuova funzione exec nella finestra mobile 1.3 per aggiornarli dopo l'apertura di un container. –

2

Ho provato la mappatura dei file di dati e le directory veloce recupero nel mio contenitore Oracle XE. Tuttavia, ho cambiato idea dopo aver perso i file ... quindi dovresti stare molto attento a questo approccio e capire come la finestra mobile gestisca quegli spazi in tutte le operazioni.

Ho trovato, ad esempio, che se si puliscono i vecchi contenitori, il contenuto delle directory mappate verrà cancellato anche se sono mappati su qualcosa all'esterno dell'area del sistema finestra mobile (/ var/lib/docker). Puoi evitarlo tenendo contenitori e riavviandoli di nuovo. Ma, se vuoi la versione e creare una nuova immagine ... devi fare il backup di quei file.

Oracle anche id è i file stessi (checksum o inode # o qualcosa) e si lamenta di loro all'avvio .... Non ho indagato sull'estensione di tale problema o anche se in effetti c'è qualche problema lì.

Ho scelto di non mappare nessuno di quei file/dir e di utilizzare il datapump o qualsiasi altra cosa per ottenere i dati finché non avrò una migliore gestione di tutto ciò che può accadere.

Così ho aggiornare i dati e la versione dell'immagine ... a spingere per il pronti contro termine a fini di custodia

+0

Grazie. Sembra che non sia in grado di avviare un'immagine con dati aggiornati dopo la codifica. Importi semplicemente il contenitore e ne esegui l'immagine? –

+0

Sì. E, gli do un tag che indica che è uno stato speciale. – Rondo

4

ho realizzato volumi di montaggio per i dati db. Ecco la forchetta:

  • ridurre la dimensione immagine da 3.8G a 825Mb
  • inizializzazione Database spostato fuori della fase di accumulo dell'immagine. Ora il database viene inizializzato all'avvio del contenitore senza file di database installati
  • supporto per il riutilizzo dei supporti al di fuori del contenitore. Aggiunto spegnimento regolare sul containeer fermare
  • sshd Rimosso

Check qui:

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

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