Kann mir Docker bei der Installation der Oracle 11g-Datenbank auf Ubuntu helfen?

Kann mir Docker bei der Installation der Oracle 11g-Datenbank auf Ubuntu helfen?

Wir kämpfen mit einem häufigen Problem, wenn wir versuchen, unseren Entwicklern eine Oracle 11g-Instanz zum Testen bereitzustellen. Unsere Standard-Build-Agenten basieren auf Ubuntu 12.04, aber Oracle unterstützt nur RedHat-basierte Betriebssysteme.

Im Internet kursieren einige Hacks zur Installation von Oracle auf Ubuntu, aber sie scheinen sehr instabil und eher Glückssache zu sein.

Wir möchten vermeiden, dass wir eine komplette Puppet-Konfiguration des Build-Servers auf RedHat (/CentOS) unterstützen müssen, nur um Oracle zu unterstützen. Daher habe ich mich gefragt, ob wir Docker einsetzen können, um eine RedHat-ähnliche Umgebung bereitzustellen, die nur für Oracle auf unseren Standard-Ubuntu-Systemen erforderlich ist. Die Idee ist, dass Oracle in seinem eigenen Container ausgeführt wird, der Rest des Build-Agenten jedoch weiterhin auf Standard-Ubuntu ausgeführt wird und über TCP mit Oracle kommunizieren kann.

Ich weiß, was LXCs sind und kenne den Unterschied zwischen ihnen und vollwertiger Virtualisierung wie KVM/VirtualBox usw., aber ich frage mich, ob es trotzdem möglich ist.

Danke.

Antwort1

Hier ist meine Gabel:

  • Reduzieren Sie die Bildgröße von 3,8 GB auf 825 MB
  • Datenbankinitialisierung aus der Image-Build-Phase verschoben
  • Jetzt wird die Datenbank beim Start des Containers initialisiert, ohne dass Datenbankdateien gemountet sind
  • Unterstützung der Medienwiederverwendung außerhalb des Containers
  • Ordentliches Herunterfahren beim Stoppen des Containers hinzugefügt
  • SSHD entfernt

Sie können hier nachsehen:
https://registry.hub.docker.com/u/sath89/oracle-xe-11g/
https://github.com/MaksymBilenko/docker-oracle-xe-11g

Antwort2

Ob Oracle Express für Sie geeignet ist:

  1. Laden Sie Oracle XE 11g rpm herunter.
  2. Konvertieren Sie RPM mit Alien in Deb.
  3. „Extrahieren“ Sie das Deb-Paket mit dem Befehl dpkg-deb.
  4. Ändern Sie die Deb-Skripte:
    • Ändern Sie [ "$1" != "1" ] in [ "$1" != "install" ] am Anfang von preinst.
    • Ändern Sie [ "$1" = "1" -o -z "$2" ] in [ "$1" = "configure" -a -z "$2" ] am Anfang von Postint.
    • Ändern Sie [ "$1" = "0" ] in [ "$1" = "remove" -o "$1" = "purge" ] in prerm und postrm.
    • Ändern Sie den Befehl „chkconfig“ in postinst und prerm in „update-rc.d“.
    • Im Init-Skript: absoluten Pfad einiger Systembefehle entfernen; /etc/sysconfig/oracle-xe auf /etc/default/oracle-xe korrigieren; /var/lock/subsys auf /var/lock korrigieren; und so weiter …
    • Abhängigkeiten zur Steuerdatei hinzufügen: bc & libaio1.
  5. Erstellen Sie das Deb-Paket mit dem Deb-Befehl.

Jetzt haben Sie ein Deb-Paket von Oracle XE 11g. Installieren Sie es!

Aber es gibt immer noch ein Problem: /dev/shm. So beheben Sie es:

  1. Kommentieren Sie die Zeile in /etc/init/mounted-dev.conf: [ -e /dev/shm ] || ln -s /run/shm /dev/shm.
  2. Fügen Sie eine Zeile in /etc/fstab hinzu: shm /dev/shm tmpfs size=2g 0 0
  3. rm -f /dev/shm; mkdir /dev/shm; shm einhängen

Starten Sie Oracle XE: service oracle-xe configure

Antwort3

Ich verwende folgendesDocker-Bildmit gutem Erfolg.

Zum Laufen bringen mit:

 docker pull wnameless/oracle-xe-11g

Und

 docker run -d -p 49160:22 -p 49161:1521 wnameless/oracle-xe-11g

Antwort4

Dies ist definitiv ein praktikabler Ansatz. Wir verwenden Ubuntu 14.04 für unsere Host-Rechner und betreiben mehrere Oracle 11g-Instanzen auch in Docker-Containern für Entwicklungszwecke.

Derzeit (Docker 1.5) ist für 11g und 12c das Hauptproblem die fest codierte Begrenzung des gemeinsam genutzten Speichers von DockerAusgabe #2606. Derzeit gibt es hierfür zwei Workarounds:

  1. Verwenden docker run --privileged ...und mounten Sie /dev/shm mit mehr Speicher erneut, bevor Sie die Instanz starten
  2. Ändern und erstellen Sie Docker selbst neu. Für diesen Fall habe ich ein Dockerfile für 12c zusammengestellt, mit dem Sie ein Image in einem Rutsch erstellen können:https://github.com/arpagaus/docker-oracle-12c

verwandte Informationen