2014-10-21 19 views
6

Używam następujący plik baza Döcker:Oracle na Döcker z pre-pompowane danych

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

Czytałam trochę na jak skonfigurować Volumne danych z tego SO question i this blog, ale nie wiem jak aby dopasować części do siebie.

Krótko mówiąc, chciałbym zarządzać danymi Oracle w obrazie Docker, tylko jak to zrobić?

+0

są jakieś 'instrukcje VOLUME' w Dockerfile dla' wnameless/XE -temp'? – Thomasleveil

+1

Czego próbowałeś i gdzie jesteś udawany? –

+0

Twój link do pytania SO wskazuje na offermann-blog – Bohne

Odpowiedz

0

Ogólnie:

# 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

Jak obsługiwałbyś pliki control.dbf (które według mojej wiedzy powiedzą wyroczni gdzie szukać plików dbf)? https://registry.hub.docker.com/u/alexeiled/docker-oracle-xe-11g/ hardcodes it w pliku DockerFile. Wiem, jak to zrobić --volumes-od do przechowywania tam tabel ... ale ponieważ control.dbf jest przechowywany w pojemniku Oracle wydaje się, że informacje zostaną utracone po ponownym uruchomieniu kontenera. –

+0

Czy nie można ich również zamontować z woluminu? Jeśli nie, możesz użyć nowej funkcji exec w oknie dokowanym 1.3, aby zaktualizować je po pojawieniu się kontenera. –

2

próbowałem mapowania pliki danych i katalogów szybkiego odzyskiwania w moim oracle xe pojemniku. Jednak po utracie plików zmieniłem zdanie ... więc powinieneś bardzo uważać na to podejście i zrozumieć, w jaki sposób docker zarządza tymi przestrzeniami we wszystkich operacjach.

Znalazłem na przykład, że jeśli wyczyścisz stare kontenery, zawartość odwzorowanych katalogów zostanie usunięta, nawet jeśli zostaną zmapowane na coś poza obszarem systemu dokowania (/ var/lib/docker). Możesz tego uniknąć, trzymając pojemniki i uruchamiając je ponownie. Ale jeśli chcesz wersję i zrobić nowy obraz ... musisz wykonać kopię zapasową tych plików.

Oracle również identyfikuje pliki (suma kontrolna lub i-węzeł lub coś podobnego) i narzeka na nie przy starcie .... Nie zbadałem zasięgu tego problemu ani nawet, czy rzeczywiście jest tam jakikolwiek problem.

Zdecydowałem się nie mapować żadnego z tych plików/katalogów i planuję użyć datapump lub cokolwiek innego, aby uzyskać dane, dopóki nie otrzymam lepszej kontroli nad wszystkim, co może się zdarzyć.

Więc aktualizacji danych i wersji obrazu ... pcha się do repo na przechowanie

+0

Dzięki. Wygląda na to, że po otagowaniu nie mogę uruchomić obrazu ze zaktualizowanymi danymi. Czy po prostu zatwierdzasz kontener i wersję obrazu z niego? –

+0

Tak. I daję mu znacznik, który wskazuje na jego specjalny status. – Rondo

4

Uświadomiłem sobie zamontować wolumen danych DB. Oto mój widelec:

  • Zmniejszenie rozmiaru obrazu od 3,8 g do 825Mb
  • inicjalizacji bazy przeniesione z fazy budowania obrazu. Teraz baza danych uruchamia się podczas uruchamiania bazy danych, a żadne pliki baz danych nie są montowane do ponownego użycia nośników poza kontenerem. Dodano wdzięku zamknięcie na containeer zatrzymać
  • Usunięto sshd

można sprawdzić tutaj:

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

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

Powiązane problemy