SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Downloaden Sie, um offline zu lesen
BASEL | BERN | BRUGG | BUKAREST | DÜSSELDORF | FRANKFURT A.M. | FREIBURG I.BR. | GENF
HAMBURG | KOPENHAGEN | LAUSANNE | MANNHEIM | MÜNCHEN | STUTTGART | WIEN | ZÜRICH
www.oradba.ch@stefanoehrli
Oracle und Docker
Oracle Datenbanken in Docker Container
Stefan Oehrli
BASEL | BERN | BRUGG | BUKAREST | DÜSSELDORF | FRANKFURT A.M. | FREIBURG I.BR. | GENF
HAMBURG | KOPENHAGEN | LAUSANNE | MANNHEIM | MÜNCHEN | STUTTGART | WIEN | ZÜRICH
Stefan Oehrli
Plattform Architekt, Trainer und Partner bei Trivadis
• Seit 1997 in verschiedenen IT-Bereichen tätig
• Seit 2008 bei der Trivadis AG
• Mehr als 20 Jahre Erfahrung im Umgang Oracle Datenbanken
Fokus: Daten schützen und Datenbanken sicher betreiben
• Security Assessments und Reviews
• Datenbank Sicherheitskonzepte und deren Umsetzung
• Oracle Backup & Recovery Konzepte und Troubleshooting
• Oracle Enterprise User Security, Advanced Security, Database Vault, …
• Oracle Directory Services
Co-Autor des Buches Der Oracle DBA (Hanser, 2016/07)
@stefanoehrli www.oradba.ch
Agenda
22.05.2019 SOUG Day - Oracle und Docker3
• Einleitung
• Docker Images, Container und Volumes
• Datenbank Image
• Datenbank Container
• Anwendungsfälle
• Lizenzierung
• Zusammenfassung
Einleitung
22.05.2019 SOUG Day - Oracle und Docker4
Was ist Docker?
22.05.2019 SOUG Day - Oracle und Docker5
• Eine Software-Containerplattform
• Entstanden aus Linux / Linux-Containern
• Verfügbar…
• … für Linux, Mac OS und Windows
• … als Community Edition (CE) und Enterprise Edition (EE)
• Teil der Linux Open Container Initiative (OCI)
• Docker ist nicht die einzige Implementierung von Linux-Containern
• Core OS / Rkt, LXC Linux Containers, OpenVZ, Mesos Containerizer,…
• Docker hat den grössten Marktanteil
• Zielsetzung erhöhen der Austauschbarkeit und Reproduzierbarkeit
Oracle Support für Docker
22.05.2019 SOUG Day - Oracle und Docker6
• Diverse Oracle-Produkte sind für Docker unterstützt und zertifiziert.
• MOS Note 2216342.1 Oracle Support for Database Running on Docker
• MOS Note 2017945.1 Support Information for Oracle WebLogic Server and Oracle Fusion
Middleware Running in Docker Containers
• Container Oracle Linux 7 / UEK4 Kernel oder
Red Hat Enterprise Linux 7 als Basis Image
• Oracle Quellen für Images oder offizielle Build Quellen
• Oracle Docker Build Quellen auf GitHub
https://github.com/oracle/docker-images
• Oracle Container Registry https://container-registry.oracle.com
• Oracle Container Engine and Registry https://developer.oracle.com/containers
• Oracle auf Docker Hub https://hub.docker.com/publishers/oracle
Was gibt es sonst noch über Container?
22.05.2019 SOUG Day - Oracle und Docker7
• Es gibt nicht DEN Container
• Single Process / Service
• Kein Ersatz für VMs
• Geringer Platz Bedarf
• Verstehen, wie man Container baut, aber
• ...nicht jeder Container muss individuell
angepasst werden
• ...verfügbare und vertrauenswürdige
Container-Repositorys nutzen
• Umgang mit Identitäten und sensiblen Daten
• Umgang mit Daten persistent
Quelle: Volkswagen Advertising (June 2016)
Docker Images,
Container und Volumes
22.05.2019 SOUG Day - Oracle und Docker8
Virtualisierung
• Nutzung gemeinsamen Infrastruktur
• jede VM ist ein "Server"
• Gastbetriebssystem
• Software und Bibliotheken
• Anwendungen
• Redundanz
• Aufwand für die Einrichtung der VMs
22.05.2019 SOUG Day - Oracle und Docker9
Docker Container
• Nutzung gemeinsamen Infrastruktur
• ein Host-Betriebssystem
• Anwendungen sind "verpackt"
• Nur notwendige Bibliotheken und
Softwarekomponenten
• Verwendung vorhandener Images
• Schlank
• Reproduzierbar
• Weil automatisch erstellt
• Docker Image sind unveränderlich
22.05.2019 SOUG Day - Oracle und Docker10
Docker Komponenten
22.05.2019 SOUG Day - Oracle und Docker11
Volumes
• Docker Image sind unveränderlich
• Änderungen nur in einem neuen Image
• Ein Container basiert auf einem Image
• Top Layer read/write
• Keine Persistenz über Lebensdauer des
Containers
• Sicherstelen der Datenpersistenz durch
Volumes
• Daten liegen ausserhalb vom Container
• Lifecycle…
• Neues Image
• Neuer Container
• aktuelles Volume
22.05.2019 SOUG Day - Oracle und Docker12
Datenbank Image
22.05.2019 SOUG Day - Oracle und Docker13
• Bereitstellen der Docker Build Skripte z.B. https://github.com/oehrlis/docker
• Docker Umgebung z.B. Docker Desktop für Mac OS
• Bereitstellen der Oracle Software
• Oracle Database Enterprise Edition 18c (18.3.0.0)
• Oracle Database Release Update 18.6.0.0.0 (Patch 29301631)
• Oracle OJVM Release Update 18.6.0.0.190416 (Patch 29249584)
• OPatch 12.2.0.1.17 for DB 18.x releases (APR 2019) (Patch 6880880)
• Bereitstellen des Docker Basis Images
docker pull oraclelinux:7-slim
git clone https://github.com/oehrlis/docker
Voraussetzungen
22.05.2019 SOUG Day - Oracle und Docker14
• Dockerfile nutzt Multi-Stage Build
• Verfügbar ab Docker 17.05
• Verwendung von mehreren FROM Anweisungen
• Aufteilung des Build Prozesses in mehrere Abschnitte
• Reduktion der Image Grösse
• Software ist teil vom Build Kontext und wird kopiert
• Optional herunterladen der Software von einem lokalen Web Server
• Docker Build mit dem Kommando docker build starten
cd docker/OracleDatabase/18.6.0.0
docker build -t oracle/database:18.6.0.0 .
Image erstellen
22.05.2019 SOUG Day - Oracle und Docker15
Dockerfile
• Base Image
• Setzen der Umgebung
• OS Konfiguration des Basis Images
• Build Image
• Kopieren der Oracle Binaries und Patch
Files
• Installation der Oracle Software
• Installation der Oracle Patch, Trivadis
BasenvTM
• Ziel Image
• Kopieren der Software vom Build Image
• Abschluss der Installation (root.sh
Skripte)
• Definition von Ports, Volume sowie Start
Skript
22.05.2019 SOUG Day - Oracle und Docker16
Image Build Skripte
22.05.2019 SOUG Day - Oracle und Docker17
Dockerfile nutzt verschieden Skripte für die Konfiguration des Images
• 00_setup_oradba_init.sh Installation der aktuellsten OraDBA Init Skripte
• 01_setup_os_db.sh OS Setup Konfiguration
• Benutzer, Gruppen erstellen
• YUM Software Pakete installieren
• 10_setup_db_18.6.sh Installation der Oracle Binaries
• Oracle Basis Release
• Release Updates und Oracle JVM Update
• 20_setup_basenv.sh Installation von Trivadis BasEnvTM
• 5n_xxxxx_database.sh Verschiedene Skripte zur Konfiguration des Containers
Datenbank Container
22.05.2019 SOUG Day - Oracle und Docker18
• Kontrolle des Container Logs und Status der DB mit docker logs -f tdb186s
• Starten bzw. Instanziieren eines Oracle Datenbank Containers mit docker run
• festlegen des Host (--hostname) und Container Namens (--name)
• Volume für die Datenbank Files
• Oracle Instanz Name als Umgebungsvariable ORACLE_SID
• Ausführen des Conainer Kommandos CMD
docker run --detach --hostname tdb186s --name tdb186s 
--volume /data/docker/volumes/tdb186s:/u01 
-p 1521:1521 -p 5500:5500 -e ORACLE_SID=TDB186S 
oracle/database:18.6.0.0
Oracle Datenbank Container
22.05.2019 SOUG Day - Oracle und Docker19
Ablauf beim Container Start
22.05.2019 SOUG Day - Oracle und Docker20
Container Scripte
22.05.2019 SOUG Day - Oracle und Docker21
• 50_run_database.sh prüft das Volumen und startet die Datenbank mit…
• 50_start_database.sh Ist keine die Datenbank vorhanden, wird das Skrip
• 52_create_database.sh aufgerufen
• 50_start_database.sh startet den Listener und die Datenbank Instanz
• 52_create_database.sh erstellt mit dem dbca eine Datenbank. Basis Parameter lassen sich mit
Umgebungsvariablen anpassen.
• 55_config_database.sh prüft, ob Konfigurationsdateien (*.sh oder *.sql) im Verzeichnis
${INSTANCE_INIT}/setup respektive ${INSTANCE_INIT}/startup vorhanden sind.
• 55_check_database.sh wird für den Healthcheck des Docker Containers genutzt und prüft den
Status der Datenbank Instanz.
Container Variablen
22.05.2019 SOUG Day - Oracle und Docker22
Variable Verwendung
ORACLE_SID Oracle SID respektive Datenbank Name. Standardwert ist TDB186S
CONTAINER Flag für das Erstellen einer Oracle Container Datenbank
Standardwert ist FALSE
ORACLE_PDB Oracle PDB Name. Standardwert PDB1
ORACLE CHARACTERSET Oracle Zeichensatz. Standardwert AL32UTF8
ORACLE_PWD Password für den SYS Benutzer. Standard Passwort wird generiert
und im admin Verzeichnis abgelegt
INSTANCE_INIT Verzeichnis für die Instanz Konfigurationsdateien
ORADBA_RSP Diverse Variablen für die Anpassung des dbca Templates
Abschluss initialer Container Start
22.05.2019 SOUG Day - Oracle und Docker23
• Beim ersten Start wird durch 50_run_database.sh eine Datenbank angelegt.
• Kontrolle der Ausgabe von 50_run_database.sh mit docker logs tdb186s
Zugriff auf den Datenbank Container
22.05.2019 SOUG Day - Oracle und Docker24
• Zugriff für die Anwendungen via exportierte Ports z.B. 1521
• Unterschiedliche ob auf Windows, MacOS und Linux
• Docker läuft nur auf Linux “native”
• Zugriff via Kommandozeile mit docker exec und sqlplus, bash etc.
Zugriff auf den Datenbank Container
22.05.2019 SOUG Day - Oracle und Docker25
• Zugriff für die Anwendungen via exportierte Ports z.B. 1521
• Unterschiedliche ob auf Windows, MacOS und Linux
• Docker läuft nur auf Linux “native”
• Zugriff via Kommandozeile mit docker exec und sqlplus, bash etc.
Anwendungsfälle
22.05.2019 SOUG Day - Oracle und Docker26
Anwendungsfälle
22.05.2019 SOUG Day - Oracle und Docker27
• Oracle Datenbanken in Container auch im Microservice Umfeld nutzbar
• Entsprechende Build und Konfigurationsskripte müssen individuell erarbeitet werden
• Real Application Cluster (RAC) für Test und Entwicklung offiziell unterstützt
• Oracle Beispiel auf GitHub https://github.com/oracle/docker-images
• Nutzung von Oracle Container
• Docker Container enthält single-PDB
• PDB kann relativ einfach plugged/unplugged werden
• Verwenden von Docker-Compose
• Keine manuellen Docker Kommandos
• Container verlinken
• Aufbau eines privaten Netzwerks
• Abschaltung entweder durch stop oder down
• down unten entfernt den Container
• stop stoppt einfach den Dienst / Container
• Definieren aller Parameter, Volumes, Netzwerke usw. in einer YAML-Datei.
• Der Standardname ist docker-compose.yml
• Kann mehrere Container enthalten
• Wird über den Befehl docker-compose oder den regulären docker Befehl verwaltet.
• Starten eines Containers im Hintergrund
docker-compose up -d
docker-compose down
Docker Compose
22.05.2019 SOUG Day - Oracle and Docker28
• Beispiel docker-compose.yml Datei für tdb186s
• YAML, achtet auf die richtigen Leerzeichen!
tdb186s:
image: ${DOCKER_USER}/${DOCKER_REPO}:18.6.0.0
container_name: tdb186s
hostname: tdb186s
restart: unless-stopped
network_mode: bridge
volumes:
- ${DOCKER_VOLUME_BASE}/tdb186s:/u01
- ./config:/u01/config
ports:
- "1521"
environment:
CONTAINER: 'FALSE’
INSTANCE_INIT: /u01/config
ORACLE_SID: TDB186S
Docker Compose Datei
22.05.2019 SOUG Day - Oracle and Docker29
Oracle Enterprise User Security
• Oracle Datenbank Container
• Demo Schema mit VPD
• Oracle Unified Directory Container
• Directory mit EUS Suffix
• Initialen Start der Container
• Erstellen der DB / Directory
• Registrierung der DB
• Konfiguration von EUS
• Verfügbar auf GitHub
• https://github.com/oehrlis/docker/tre
e/master/samples/eus
22.05.2019 SOUG Day - Oracle und Docker30
Oracle DB und Docker Best Practice
22.05.2019 SOUG Day - Oracle und Docker31
• Immer die aktuellste Docker Version verwenden mindestens Docker CE 17.03
• btrfs ist der empfohlene Storage Treiber alternative overlay2
• Aktuellste Images und Build Dateien verwenden
• Daten Container oder Volumes nutzen um Persistenz sicher zu stellen
• Container sind keine VM’s
• Patching, HA, B&R und Security funktioniert anders
• Grundsätzlich besteht kein Grund für ein Login in den Container
Lizenzierung
22.05.2019 SOUG Day - Oracle und Docker32
Lizenzierung - Docker
22.05.2019 SOUG Day - Oracle und Docker33
• Docker Desktop
• Docker Anwendung für Mac- oder Windows
• Als Community und neu Enterprise Version verfügbar
• Docker Engine
• Verfügbar für verschiedene Linux Distributionen
• Community und Enterprise Version verfügbar
• Docker Enterprise
• Komplette Containerplattform basierend auf
Docker Engine
• Zusätzliche Komponenten wie Support,
Trusted Registry, Orchestrierung, Security etc.
Quelle: https://www.docker.com/products
Lizenzierung - Oracle
22.05.2019 SOUG Day - Oracle und Docker34
Oracle Software
• Docker ermöglicht die Limitierung von Ressourcen wie CPU, Memory, etc.
• Limitierung nicht anwendbar im Kontext der Oracle Lizenzierung!
• CPU Cores der Docker Hosts bestimmen die benötigten Lizenzen.
• Analoge Herausforderung wie bei der Virtualisierung.
Mögliche Lösungsansätze
• Verwendung von Oracle Express Edition 18c im Docker Umfeld
• Oracle ULA (Unlimited License Agreement)
• Aufbau einer dedizierten Docker Infrastruktur für Oracle Software
Quelle: Oracle Inc.
Zusammenfassung
22.05.2019 SOUG Day - Oracle und Docker35
Zusammenfassung
• Oracle Datenbanken können einfach und schnell in Container aufgebaut werden.
• Docker-basierte Datenbanken sind nicht für eine hohe io-Performance geeignet.
• Durch die Verwendung von Docker Volumes ist die Datenpersistenz sichergestellt.
• Erarbeitung von klaren Anwendungsfällen und passenden Architektur ist Voraussetzung.
• Lizenzierung bleibt wie bei der Virtualisierung eine der grossen Herausforderungen.
22.05.2019 SOUG Day - Oracle und Docker36
BASEL | BERN | BRUGG | BUKAREST | DÜSSELDORF | FRANKFURT A.M. | FREIBURG I.BR. | GENF
HAMBURG | KOPENHAGEN | LAUSANNE | MANNHEIM | MÜNCHEN | STUTTGART | WIEN | ZÜRICH
Question and answers…
Stefan Oehrli
Solution Manager / Trivadis Partner
Tel.: +41 58 459 55 55
stefan.oehrli@trivadis.com
@stefanoehrli www.oradba.ch https://url.oradba.ch/SOUG1905
Oracle und Docker

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Oracle12c für Entwickler
Oracle12c für EntwicklerOracle12c für Entwickler
Oracle12c für Entwickler
 
Automatisiertes disaster recovery testing mit der oracle cloud
Automatisiertes disaster recovery testing mit der oracle cloudAutomatisiertes disaster recovery testing mit der oracle cloud
Automatisiertes disaster recovery testing mit der oracle cloud
 
Hybrid Partitioned Tables in Oracle Database 19c
Hybrid Partitioned Tables in Oracle Database 19cHybrid Partitioned Tables in Oracle Database 19c
Hybrid Partitioned Tables in Oracle Database 19c
 
Oracle GoldenGate Monitoring
Oracle GoldenGate MonitoringOracle GoldenGate Monitoring
Oracle GoldenGate Monitoring
 
Oracle Database Appliance X4-2
Oracle Database Appliance X4-2Oracle Database Appliance X4-2
Oracle Database Appliance X4-2
 
Oracle Database Appliance X5-2
Oracle Database Appliance X5-2Oracle Database Appliance X5-2
Oracle Database Appliance X5-2
 
Überblick Oracle GoldenGate
Überblick Oracle GoldenGateÜberblick Oracle GoldenGate
Überblick Oracle GoldenGate
 
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)
 
Rsyslog - Deutsche Qualitätsarbeit für Linux
Rsyslog - Deutsche Qualitätsarbeit für LinuxRsyslog - Deutsche Qualitätsarbeit für Linux
Rsyslog - Deutsche Qualitätsarbeit für Linux
 
Replikation im heterogenen Umfeld mit Oracle GoldenGate
Replikation im heterogenen Umfeld mit Oracle GoldenGateReplikation im heterogenen Umfeld mit Oracle GoldenGate
Replikation im heterogenen Umfeld mit Oracle GoldenGate
 
Exadata with VM as Consolidation Plattform
Exadata with VM as Consolidation PlattformExadata with VM as Consolidation Plattform
Exadata with VM as Consolidation Plattform
 
Andreas Jordan – IT-Tage 2015 – Flashback – Warum Oracle Zeitreisen anbieten ...
Andreas Jordan – IT-Tage 2015 – Flashback – Warum Oracle Zeitreisen anbieten ...Andreas Jordan – IT-Tage 2015 – Flashback – Warum Oracle Zeitreisen anbieten ...
Andreas Jordan – IT-Tage 2015 – Flashback – Warum Oracle Zeitreisen anbieten ...
 
DB2 High Availability für IBM Connections, Sametime oder Traveler
DB2 High Availability für IBM Connections, Sametime oder TravelerDB2 High Availability für IBM Connections, Sametime oder Traveler
DB2 High Availability für IBM Connections, Sametime oder Traveler
 
Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?
Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?
Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?
 
Oracle GoldenGate: Synchronisation zwischen Oracle und MySQL Datenbanken, Nov...
Oracle GoldenGate: Synchronisation zwischen Oracle und MySQL Datenbanken, Nov...Oracle GoldenGate: Synchronisation zwischen Oracle und MySQL Datenbanken, Nov...
Oracle GoldenGate: Synchronisation zwischen Oracle und MySQL Datenbanken, Nov...
 
Oracle Database In-Memory Advisor (Deutsch)
Oracle Database In-Memory Advisor (Deutsch)Oracle Database In-Memory Advisor (Deutsch)
Oracle Database In-Memory Advisor (Deutsch)
 
Solr & Cassandra: Searching Cassandra with DataStax Enterprise
Solr & Cassandra: Searching Cassandra with DataStax EnterpriseSolr & Cassandra: Searching Cassandra with DataStax Enterprise
Solr & Cassandra: Searching Cassandra with DataStax Enterprise
 
Oracle Database 12c In-Memory Option
Oracle Database 12c In-Memory Option Oracle Database 12c In-Memory Option
Oracle Database 12c In-Memory Option
 
Oracle Database Security Assessment Tool (DBSAT)
Oracle Database Security Assessment Tool (DBSAT)Oracle Database Security Assessment Tool (DBSAT)
Oracle Database Security Assessment Tool (DBSAT)
 
WebLogic im Docker Container
WebLogic im Docker ContainerWebLogic im Docker Container
WebLogic im Docker Container
 

Ähnlich wie Oracle und Docker

Boost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerBoost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with Docker
Steven Grzbielok
 
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdfDockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
Syahri Ramadhan
 

Ähnlich wie Oracle und Docker (20)

Boost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerBoost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with Docker
 
Docker for Windows / Windows Container
Docker for Windows / Windows ContainerDocker for Windows / Windows Container
Docker for Windows / Windows Container
 
Docker Einführung @GPN15
Docker Einführung @GPN15Docker Einführung @GPN15
Docker Einführung @GPN15
 
Docker Workbench
Docker WorkbenchDocker Workbench
Docker Workbench
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
WebLogic im Docker Container
WebLogic im Docker ContainerWebLogic im Docker Container
WebLogic im Docker Container
 
Docker-Images mit vorinstallierter Instanz einer Oracle-DB
Docker-Images mit vorinstallierter Instanz einer Oracle-DBDocker-Images mit vorinstallierter Instanz einer Oracle-DB
Docker-Images mit vorinstallierter Instanz einer Oracle-DB
 
Docker Hosting (Webinar vom 10. März 2016)
Docker Hosting (Webinar vom 10. März 2016)Docker Hosting (Webinar vom 10. März 2016)
Docker Hosting (Webinar vom 10. März 2016)
 
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
 
Icinga 2009 at Nagios Workshop
Icinga 2009 at Nagios WorkshopIcinga 2009 at Nagios Workshop
Icinga 2009 at Nagios Workshop
 
Oracle Technology Monthly Oktober 2017
Oracle Technology Monthly Oktober 2017Oracle Technology Monthly Oktober 2017
Oracle Technology Monthly Oktober 2017
 
Was gibt es Neues im Docker-Universum
Was gibt es Neues im Docker-UniversumWas gibt es Neues im Docker-Universum
Was gibt es Neues im Docker-Universum
 
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdfDockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
 
docker.io @ CentOS 7 - Secure And Portable Containers Made Easy
docker.io @ CentOS 7 - Secure And Portable Containers Made Easydocker.io @ CentOS 7 - Secure And Portable Containers Made Easy
docker.io @ CentOS 7 - Secure And Portable Containers Made Easy
 
Alternativen des Betriebs von Weblogic mit Kubernetes/Docker
Alternativen des Betriebs von Weblogic mit Kubernetes/DockerAlternativen des Betriebs von Weblogic mit Kubernetes/Docker
Alternativen des Betriebs von Weblogic mit Kubernetes/Docker
 
DevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCampDevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCamp
 
Oracle Database 12c Release 2
Oracle Database 12c Release 2 Oracle Database 12c Release 2
Oracle Database 12c Release 2
 
Docker und IBM Bluemix
Docker und IBM BluemixDocker und IBM Bluemix
Docker und IBM Bluemix
 
Dockerize It - Mit apex in die amazon cloud
Dockerize It - Mit apex in die amazon cloudDockerize It - Mit apex in die amazon cloud
Dockerize It - Mit apex in die amazon cloud
 

Mehr von Stefan Oehrli

Mehr von Stefan Oehrli (14)

OracleBeer_Terraform_soe.pdf
OracleBeer_Terraform_soe.pdfOracleBeer_Terraform_soe.pdf
OracleBeer_Terraform_soe.pdf
 
DOAG Oracle Database Vault
DOAG Oracle Database VaultDOAG Oracle Database Vault
DOAG Oracle Database Vault
 
AUSOUG Oracle Password Security
AUSOUG Oracle Password SecurityAUSOUG Oracle Password Security
AUSOUG Oracle Password Security
 
IaC MeetUp Active Directory Setup for Oracle Security LAB
IaC MeetUp Active Directory Setup for Oracle Security LABIaC MeetUp Active Directory Setup for Oracle Security LAB
IaC MeetUp Active Directory Setup for Oracle Security LAB
 
SOUG Day Oracle 21c New Security Features
SOUG Day Oracle 21c New Security FeaturesSOUG Day Oracle 21c New Security Features
SOUG Day Oracle 21c New Security Features
 
Security Best Practice: Oracle passwords, but secure!
Security Best Practice: Oracle passwords, but secure!Security Best Practice: Oracle passwords, but secure!
Security Best Practice: Oracle passwords, but secure!
 
SOUG PDB Security, Isolation and DB Nest 20c
SOUG PDB Security, Isolation and DB Nest 20cSOUG PDB Security, Isolation and DB Nest 20c
SOUG PDB Security, Isolation and DB Nest 20c
 
Security Best Practice: Oracle passwords, but secure!
Security Best Practice: Oracle passwords, but secure!Security Best Practice: Oracle passwords, but secure!
Security Best Practice: Oracle passwords, but secure!
 
Oracle Cloud deployment with Terraform
Oracle Cloud deployment with TerraformOracle Cloud deployment with Terraform
Oracle Cloud deployment with Terraform
 
DOAG Oracle Unified Audit in Multitenant Environments
DOAG Oracle Unified Audit in Multitenant EnvironmentsDOAG Oracle Unified Audit in Multitenant Environments
DOAG Oracle Unified Audit in Multitenant Environments
 
SOUG Oracle Unified Audit for Multitenant Databases
SOUG Oracle Unified Audit for Multitenant DatabasesSOUG Oracle Unified Audit for Multitenant Databases
SOUG Oracle Unified Audit for Multitenant Databases
 
UKOUG Techfest 2019 Central user Administration of Oracle Databases
UKOUG Techfest 2019 Central user Administration of Oracle DatabasesUKOUG Techfest 2019 Central user Administration of Oracle Databases
UKOUG Techfest 2019 Central user Administration of Oracle Databases
 
UKOUG TechFest PDB Isolation and Security
UKOUG TechFest PDB Isolation and SecurityUKOUG TechFest PDB Isolation and Security
UKOUG TechFest PDB Isolation and Security
 
Oracle and Docker
Oracle and DockerOracle and Docker
Oracle and Docker
 

Oracle und Docker

  • 1. BASEL | BERN | BRUGG | BUKAREST | DÜSSELDORF | FRANKFURT A.M. | FREIBURG I.BR. | GENF HAMBURG | KOPENHAGEN | LAUSANNE | MANNHEIM | MÜNCHEN | STUTTGART | WIEN | ZÜRICH www.oradba.ch@stefanoehrli Oracle und Docker Oracle Datenbanken in Docker Container Stefan Oehrli
  • 2. BASEL | BERN | BRUGG | BUKAREST | DÜSSELDORF | FRANKFURT A.M. | FREIBURG I.BR. | GENF HAMBURG | KOPENHAGEN | LAUSANNE | MANNHEIM | MÜNCHEN | STUTTGART | WIEN | ZÜRICH Stefan Oehrli Plattform Architekt, Trainer und Partner bei Trivadis • Seit 1997 in verschiedenen IT-Bereichen tätig • Seit 2008 bei der Trivadis AG • Mehr als 20 Jahre Erfahrung im Umgang Oracle Datenbanken Fokus: Daten schützen und Datenbanken sicher betreiben • Security Assessments und Reviews • Datenbank Sicherheitskonzepte und deren Umsetzung • Oracle Backup & Recovery Konzepte und Troubleshooting • Oracle Enterprise User Security, Advanced Security, Database Vault, … • Oracle Directory Services Co-Autor des Buches Der Oracle DBA (Hanser, 2016/07) @stefanoehrli www.oradba.ch
  • 3. Agenda 22.05.2019 SOUG Day - Oracle und Docker3 • Einleitung • Docker Images, Container und Volumes • Datenbank Image • Datenbank Container • Anwendungsfälle • Lizenzierung • Zusammenfassung
  • 4. Einleitung 22.05.2019 SOUG Day - Oracle und Docker4
  • 5. Was ist Docker? 22.05.2019 SOUG Day - Oracle und Docker5 • Eine Software-Containerplattform • Entstanden aus Linux / Linux-Containern • Verfügbar… • … für Linux, Mac OS und Windows • … als Community Edition (CE) und Enterprise Edition (EE) • Teil der Linux Open Container Initiative (OCI) • Docker ist nicht die einzige Implementierung von Linux-Containern • Core OS / Rkt, LXC Linux Containers, OpenVZ, Mesos Containerizer,… • Docker hat den grössten Marktanteil • Zielsetzung erhöhen der Austauschbarkeit und Reproduzierbarkeit
  • 6. Oracle Support für Docker 22.05.2019 SOUG Day - Oracle und Docker6 • Diverse Oracle-Produkte sind für Docker unterstützt und zertifiziert. • MOS Note 2216342.1 Oracle Support for Database Running on Docker • MOS Note 2017945.1 Support Information for Oracle WebLogic Server and Oracle Fusion Middleware Running in Docker Containers • Container Oracle Linux 7 / UEK4 Kernel oder Red Hat Enterprise Linux 7 als Basis Image • Oracle Quellen für Images oder offizielle Build Quellen • Oracle Docker Build Quellen auf GitHub https://github.com/oracle/docker-images • Oracle Container Registry https://container-registry.oracle.com • Oracle Container Engine and Registry https://developer.oracle.com/containers • Oracle auf Docker Hub https://hub.docker.com/publishers/oracle
  • 7. Was gibt es sonst noch über Container? 22.05.2019 SOUG Day - Oracle und Docker7 • Es gibt nicht DEN Container • Single Process / Service • Kein Ersatz für VMs • Geringer Platz Bedarf • Verstehen, wie man Container baut, aber • ...nicht jeder Container muss individuell angepasst werden • ...verfügbare und vertrauenswürdige Container-Repositorys nutzen • Umgang mit Identitäten und sensiblen Daten • Umgang mit Daten persistent Quelle: Volkswagen Advertising (June 2016)
  • 8. Docker Images, Container und Volumes 22.05.2019 SOUG Day - Oracle und Docker8
  • 9. Virtualisierung • Nutzung gemeinsamen Infrastruktur • jede VM ist ein "Server" • Gastbetriebssystem • Software und Bibliotheken • Anwendungen • Redundanz • Aufwand für die Einrichtung der VMs 22.05.2019 SOUG Day - Oracle und Docker9
  • 10. Docker Container • Nutzung gemeinsamen Infrastruktur • ein Host-Betriebssystem • Anwendungen sind "verpackt" • Nur notwendige Bibliotheken und Softwarekomponenten • Verwendung vorhandener Images • Schlank • Reproduzierbar • Weil automatisch erstellt • Docker Image sind unveränderlich 22.05.2019 SOUG Day - Oracle und Docker10
  • 11. Docker Komponenten 22.05.2019 SOUG Day - Oracle und Docker11
  • 12. Volumes • Docker Image sind unveränderlich • Änderungen nur in einem neuen Image • Ein Container basiert auf einem Image • Top Layer read/write • Keine Persistenz über Lebensdauer des Containers • Sicherstelen der Datenpersistenz durch Volumes • Daten liegen ausserhalb vom Container • Lifecycle… • Neues Image • Neuer Container • aktuelles Volume 22.05.2019 SOUG Day - Oracle und Docker12
  • 13. Datenbank Image 22.05.2019 SOUG Day - Oracle und Docker13
  • 14. • Bereitstellen der Docker Build Skripte z.B. https://github.com/oehrlis/docker • Docker Umgebung z.B. Docker Desktop für Mac OS • Bereitstellen der Oracle Software • Oracle Database Enterprise Edition 18c (18.3.0.0) • Oracle Database Release Update 18.6.0.0.0 (Patch 29301631) • Oracle OJVM Release Update 18.6.0.0.190416 (Patch 29249584) • OPatch 12.2.0.1.17 for DB 18.x releases (APR 2019) (Patch 6880880) • Bereitstellen des Docker Basis Images docker pull oraclelinux:7-slim git clone https://github.com/oehrlis/docker Voraussetzungen 22.05.2019 SOUG Day - Oracle und Docker14
  • 15. • Dockerfile nutzt Multi-Stage Build • Verfügbar ab Docker 17.05 • Verwendung von mehreren FROM Anweisungen • Aufteilung des Build Prozesses in mehrere Abschnitte • Reduktion der Image Grösse • Software ist teil vom Build Kontext und wird kopiert • Optional herunterladen der Software von einem lokalen Web Server • Docker Build mit dem Kommando docker build starten cd docker/OracleDatabase/18.6.0.0 docker build -t oracle/database:18.6.0.0 . Image erstellen 22.05.2019 SOUG Day - Oracle und Docker15
  • 16. Dockerfile • Base Image • Setzen der Umgebung • OS Konfiguration des Basis Images • Build Image • Kopieren der Oracle Binaries und Patch Files • Installation der Oracle Software • Installation der Oracle Patch, Trivadis BasenvTM • Ziel Image • Kopieren der Software vom Build Image • Abschluss der Installation (root.sh Skripte) • Definition von Ports, Volume sowie Start Skript 22.05.2019 SOUG Day - Oracle und Docker16
  • 17. Image Build Skripte 22.05.2019 SOUG Day - Oracle und Docker17 Dockerfile nutzt verschieden Skripte für die Konfiguration des Images • 00_setup_oradba_init.sh Installation der aktuellsten OraDBA Init Skripte • 01_setup_os_db.sh OS Setup Konfiguration • Benutzer, Gruppen erstellen • YUM Software Pakete installieren • 10_setup_db_18.6.sh Installation der Oracle Binaries • Oracle Basis Release • Release Updates und Oracle JVM Update • 20_setup_basenv.sh Installation von Trivadis BasEnvTM • 5n_xxxxx_database.sh Verschiedene Skripte zur Konfiguration des Containers
  • 18. Datenbank Container 22.05.2019 SOUG Day - Oracle und Docker18
  • 19. • Kontrolle des Container Logs und Status der DB mit docker logs -f tdb186s • Starten bzw. Instanziieren eines Oracle Datenbank Containers mit docker run • festlegen des Host (--hostname) und Container Namens (--name) • Volume für die Datenbank Files • Oracle Instanz Name als Umgebungsvariable ORACLE_SID • Ausführen des Conainer Kommandos CMD docker run --detach --hostname tdb186s --name tdb186s --volume /data/docker/volumes/tdb186s:/u01 -p 1521:1521 -p 5500:5500 -e ORACLE_SID=TDB186S oracle/database:18.6.0.0 Oracle Datenbank Container 22.05.2019 SOUG Day - Oracle und Docker19
  • 20. Ablauf beim Container Start 22.05.2019 SOUG Day - Oracle und Docker20
  • 21. Container Scripte 22.05.2019 SOUG Day - Oracle und Docker21 • 50_run_database.sh prüft das Volumen und startet die Datenbank mit… • 50_start_database.sh Ist keine die Datenbank vorhanden, wird das Skrip • 52_create_database.sh aufgerufen • 50_start_database.sh startet den Listener und die Datenbank Instanz • 52_create_database.sh erstellt mit dem dbca eine Datenbank. Basis Parameter lassen sich mit Umgebungsvariablen anpassen. • 55_config_database.sh prüft, ob Konfigurationsdateien (*.sh oder *.sql) im Verzeichnis ${INSTANCE_INIT}/setup respektive ${INSTANCE_INIT}/startup vorhanden sind. • 55_check_database.sh wird für den Healthcheck des Docker Containers genutzt und prüft den Status der Datenbank Instanz.
  • 22. Container Variablen 22.05.2019 SOUG Day - Oracle und Docker22 Variable Verwendung ORACLE_SID Oracle SID respektive Datenbank Name. Standardwert ist TDB186S CONTAINER Flag für das Erstellen einer Oracle Container Datenbank Standardwert ist FALSE ORACLE_PDB Oracle PDB Name. Standardwert PDB1 ORACLE CHARACTERSET Oracle Zeichensatz. Standardwert AL32UTF8 ORACLE_PWD Password für den SYS Benutzer. Standard Passwort wird generiert und im admin Verzeichnis abgelegt INSTANCE_INIT Verzeichnis für die Instanz Konfigurationsdateien ORADBA_RSP Diverse Variablen für die Anpassung des dbca Templates
  • 23. Abschluss initialer Container Start 22.05.2019 SOUG Day - Oracle und Docker23 • Beim ersten Start wird durch 50_run_database.sh eine Datenbank angelegt. • Kontrolle der Ausgabe von 50_run_database.sh mit docker logs tdb186s
  • 24. Zugriff auf den Datenbank Container 22.05.2019 SOUG Day - Oracle und Docker24 • Zugriff für die Anwendungen via exportierte Ports z.B. 1521 • Unterschiedliche ob auf Windows, MacOS und Linux • Docker läuft nur auf Linux “native” • Zugriff via Kommandozeile mit docker exec und sqlplus, bash etc.
  • 25. Zugriff auf den Datenbank Container 22.05.2019 SOUG Day - Oracle und Docker25 • Zugriff für die Anwendungen via exportierte Ports z.B. 1521 • Unterschiedliche ob auf Windows, MacOS und Linux • Docker läuft nur auf Linux “native” • Zugriff via Kommandozeile mit docker exec und sqlplus, bash etc.
  • 26. Anwendungsfälle 22.05.2019 SOUG Day - Oracle und Docker26
  • 27. Anwendungsfälle 22.05.2019 SOUG Day - Oracle und Docker27 • Oracle Datenbanken in Container auch im Microservice Umfeld nutzbar • Entsprechende Build und Konfigurationsskripte müssen individuell erarbeitet werden • Real Application Cluster (RAC) für Test und Entwicklung offiziell unterstützt • Oracle Beispiel auf GitHub https://github.com/oracle/docker-images • Nutzung von Oracle Container • Docker Container enthält single-PDB • PDB kann relativ einfach plugged/unplugged werden • Verwenden von Docker-Compose • Keine manuellen Docker Kommandos • Container verlinken • Aufbau eines privaten Netzwerks
  • 28. • Abschaltung entweder durch stop oder down • down unten entfernt den Container • stop stoppt einfach den Dienst / Container • Definieren aller Parameter, Volumes, Netzwerke usw. in einer YAML-Datei. • Der Standardname ist docker-compose.yml • Kann mehrere Container enthalten • Wird über den Befehl docker-compose oder den regulären docker Befehl verwaltet. • Starten eines Containers im Hintergrund docker-compose up -d docker-compose down Docker Compose 22.05.2019 SOUG Day - Oracle and Docker28
  • 29. • Beispiel docker-compose.yml Datei für tdb186s • YAML, achtet auf die richtigen Leerzeichen! tdb186s: image: ${DOCKER_USER}/${DOCKER_REPO}:18.6.0.0 container_name: tdb186s hostname: tdb186s restart: unless-stopped network_mode: bridge volumes: - ${DOCKER_VOLUME_BASE}/tdb186s:/u01 - ./config:/u01/config ports: - "1521" environment: CONTAINER: 'FALSE’ INSTANCE_INIT: /u01/config ORACLE_SID: TDB186S Docker Compose Datei 22.05.2019 SOUG Day - Oracle and Docker29
  • 30. Oracle Enterprise User Security • Oracle Datenbank Container • Demo Schema mit VPD • Oracle Unified Directory Container • Directory mit EUS Suffix • Initialen Start der Container • Erstellen der DB / Directory • Registrierung der DB • Konfiguration von EUS • Verfügbar auf GitHub • https://github.com/oehrlis/docker/tre e/master/samples/eus 22.05.2019 SOUG Day - Oracle und Docker30
  • 31. Oracle DB und Docker Best Practice 22.05.2019 SOUG Day - Oracle und Docker31 • Immer die aktuellste Docker Version verwenden mindestens Docker CE 17.03 • btrfs ist der empfohlene Storage Treiber alternative overlay2 • Aktuellste Images und Build Dateien verwenden • Daten Container oder Volumes nutzen um Persistenz sicher zu stellen • Container sind keine VM’s • Patching, HA, B&R und Security funktioniert anders • Grundsätzlich besteht kein Grund für ein Login in den Container
  • 32. Lizenzierung 22.05.2019 SOUG Day - Oracle und Docker32
  • 33. Lizenzierung - Docker 22.05.2019 SOUG Day - Oracle und Docker33 • Docker Desktop • Docker Anwendung für Mac- oder Windows • Als Community und neu Enterprise Version verfügbar • Docker Engine • Verfügbar für verschiedene Linux Distributionen • Community und Enterprise Version verfügbar • Docker Enterprise • Komplette Containerplattform basierend auf Docker Engine • Zusätzliche Komponenten wie Support, Trusted Registry, Orchestrierung, Security etc. Quelle: https://www.docker.com/products
  • 34. Lizenzierung - Oracle 22.05.2019 SOUG Day - Oracle und Docker34 Oracle Software • Docker ermöglicht die Limitierung von Ressourcen wie CPU, Memory, etc. • Limitierung nicht anwendbar im Kontext der Oracle Lizenzierung! • CPU Cores der Docker Hosts bestimmen die benötigten Lizenzen. • Analoge Herausforderung wie bei der Virtualisierung. Mögliche Lösungsansätze • Verwendung von Oracle Express Edition 18c im Docker Umfeld • Oracle ULA (Unlimited License Agreement) • Aufbau einer dedizierten Docker Infrastruktur für Oracle Software Quelle: Oracle Inc.
  • 35. Zusammenfassung 22.05.2019 SOUG Day - Oracle und Docker35
  • 36. Zusammenfassung • Oracle Datenbanken können einfach und schnell in Container aufgebaut werden. • Docker-basierte Datenbanken sind nicht für eine hohe io-Performance geeignet. • Durch die Verwendung von Docker Volumes ist die Datenpersistenz sichergestellt. • Erarbeitung von klaren Anwendungsfällen und passenden Architektur ist Voraussetzung. • Lizenzierung bleibt wie bei der Virtualisierung eine der grossen Herausforderungen. 22.05.2019 SOUG Day - Oracle und Docker36
  • 37. BASEL | BERN | BRUGG | BUKAREST | DÜSSELDORF | FRANKFURT A.M. | FREIBURG I.BR. | GENF HAMBURG | KOPENHAGEN | LAUSANNE | MANNHEIM | MÜNCHEN | STUTTGART | WIEN | ZÜRICH Question and answers… Stefan Oehrli Solution Manager / Trivadis Partner Tel.: +41 58 459 55 55 stefan.oehrli@trivadis.com @stefanoehrli www.oradba.ch https://url.oradba.ch/SOUG1905