oracle over docker - doag deutsche oracle · pdf fileoracle over docker david hueber coo ......

31
Oracle over Docker Infrastructure at your Service. Oracle over Docker

Upload: dangkhuong

Post on 15-Mar-2018

220 views

Category:

Documents


2 download

TRANSCRIPT

Oracle over Docker

Infrastructure at your Service.

Oracle over Docker

Oracle over Docker

David HueberCOOPrincipal Consultant

Mobile +41 79 963 43 [email protected]

Page 2

About me

Infrastructure at your Service.

18.11.2015

Oracle over Docker

Experts At Your Service> 40 specialists in IT infrastructure> Certified, experienced, passionate

Based In Switzerland> 100% self-financed Swiss company> Over CHF 6 mio. turnover

Leading In Infrastructure Services> More than 100 customers in CH, D, & F> Over 40 SLAs dbi FlexService contracted

dbi servicesWho we are

Page 318.11.2015

dbi services is hiring in Basel & Zürich ([email protected])

Oracle over Docker

1. Docker overview

2. Database provisioning architecture

3. Networking & interfaces

4. Generating a database container

Page 4

Agenda

18.11.2015

Oracle over Docker Page 5

What are containers?Docker overview

> Introduction> Docker principle> Docker architecture

18.11.2015

Oracle over Docker

Introduction

Page 6

Docker overview

18.11.2015

Oracle over Docker

Open platform to> Build> Ship> Run

...any application anywhere

Container based virtualization> Uses host kernel features

> Namespace> Cgroups

Docker principle

18.11.2015

Docker overview

Page 7

(soon)

Oracle over Docker

Containers> Lightweight> No need of Guest OS> Portability> Limited to one type of OS

Virtualization> Resource pooling> Easy to scale> Requires dedicated

> CPU / RAM / Storage> Guest OS – waste of resource

Docker principle

Page 8

Docker overview

10/05/14

Hypervisor

VM

Guest OS

App

VM

Guest OS

App

VM

Guest OS

App

Host OS

ContainerApp

OS Kernel

ContainerApp

Oracle over Docker

Docker architecture

Page 9

Docker overview

10/05/14

Host OS

Container

App

OS Kernel

Container

App

Docker Engine

ImageImage

Images

Docker Hub

Oracle over Docker

Docker Engine (Daemon)> Based on Linux Kernel features

> Namespace (PID, NET,MNT....) – isolation> Control groups (cgroups) – resources management

> Manage images> Allows containers to be build, run & shipped

Docker client> CLI interface> Additional clients available

> Docker Machine> Docker Compose> Docker Swarm – clusters> ...

Docker architecture

Page 10

Docker overview

10/05/14

[root@srvdocker01 ~]# docker versionClient version: 1.6.2.el7Client API version: 1.18Go version (client): go1.4.2Git commit (client): c3ca5bb/1.6.2OS/Arch (client): linux/amd64Server version: 1.6.2.el7Server API version: 1.18Go version (server): go1.4.2Git commit (server): c3ca5bb/1.6.2OS/Arch (server): linux/amd64

Oracle over Docker

Images> Read Only templates> Build by users

> From an image> Based on a Docker File

> Can be pulled from a repository

Containers> Isolated application platform> Principle of Single Concern> Read Write layer from one or more images

> Copy on Write> Allows to generate new images

Docker architecture

Page 11

Docker overview

10/05/14

Base Image (R/O)

addHTTP (R/0)

addDB (R/0)

R/WContainer

R/WContainer

Oracle over Docker

Registry & Repositories> Global store for images> 2 defaults

> Local registry> Docker hub

Docker architecture

Page 12

Docker overview

10/05/14

Registry

Tag Tag Tag

Oracle over Docker Page 13

DBaaS platform?Database provisioning architecture

> Target architecture> Components

18.11.2015

Oracle over Docker

Target architecture

Page 14

Database provisioning architecture

10/05/14

Host OS

Container

Instance 1

OS Kernel

Data-Only container

Docker Engine

Oracle Linux image

Oracle data image

Oracle RDBMS image Container

Instance 2

Container

Instance N

Oracle over Docker

Images> Oracle Linux image

> Can be pulled from docker registry> Can be created manually through tar file of a minimal installation

> Oracle RDBMS image> Oracle 12.1.0.2 installed> Listener configured> Port 1521 exposed> Script to deploy or start a database

Components

Page 15

Database provisioning architecture

10/05/14

tar --numeric-owner --exclude=/proc --exclude=/sys -cvf/tmp/oracle-linuxR7U1.tar /tmp

cat oracle-linuxR7U1.tar |docker import - oracle-linux/base:7.1

Oracle over Docker

Images> Oracle data image

> Oracle preinstall rdbms 12c package> ORADATA folder structure> Used to run data-only container

Components

Page 16

Database provisioning architecture

10/05/14

[root@srvdocker01 oracle-data]# cat DockerfileFROM oracle-linux/preinstall:7.1MAINTAINER [email protected] mkdir -p /u01/oradata /u02/oradata /u03/oradata /u90/flash_recovery_area;\

chown oracle:oinstall /u01/oradata;\chown oracle:oinstall /u02/oradata;\chown oracle:oinstall /u03/oradata;\chown oracle:oinstall /u90/flash_recovery_area

VOLUME /u01/oradataVOLUME /u02/oradataVOLUME /u03/oradataVOLUME /u90/flash_recovery_area

Oracle over Docker

Containers> Data-only container

> Presents storage to the application containers> Integrates 1 Volume per Mount Point> Doesn’t need to be running

Components

Page 17

Database provisioning architecture

10/05/14

[root@srvdocker01 ~]# docker run --name=ol7-oradata oracle-linux/data:7.1 true

[root@srvdocker01 ~]# docker ps –aCONTAINER ID IMAGE COMMAND STATUS NAMES783595a0e953 oracle-linux/data:7.1 "true" 6 seconds ago ol7-oradata

[root@srvdocker01 ~]# docker volume lsDRIVER VOLUME NAMElocal 0eb940ae49ecf64ec60d96f9a3cc6865c77f359012d9e6183cfbb43e8b776443local 029cf9eb6a8d4762febaac5e1161901b6920c44a1872776bb3f46ce20afb0772local d99ba295f0e38f2375c05d1e198af64c76d8473d2fabab1eda0af06e283eb665local ada706cbbc0c4748a71a0fb62c24477cd78c1901501ae113216413ef5715ae21

Oracle over Docker

Containers> Data-only container

> Volumes content can be browsed from the host machine

Components

Page 18

Database provisioning architecture

10/05/14

[root@srvdocker01 volumes]# pwd/var/lib/docker/volumes

[root@srvdocker01 volumes]# ls /*/_data/

./06b67f1c48ce3029ce43c2e9786ac66fadfa09ce99f55b608be88bd18dd4b96a/_data/:DBTEST0 DBTEST1 DBTEST2 DBTEST3 DBTEST5 DBTEST6 DBTEST7 DBTEST9./180f70c8fd751a4bfb93e9636341e92fae43665a0e12202d71cf19f70868346f/_data/:DBTEST0 DBTEST1 DBTEST2 DBTEST3 DBTEST5 DBTEST6 DBTEST7 DBTEST9./7578ee63cbabf846b422d7af6c84bf3f8460a4d52ba4de2ed5b7b14d44c50451/_data/:DBTEST3 DBTEST6 DBTEST7./f3d5d5186825ec0533cbbb4bf340ac27636c34a5a9f2bf6d503ae79cedfffb3a/_data/:DBTEST0 DBTEST1 DBTEST2 DBTEST3 DBTEST5 DBTEST6 DBTEST7 DBTEST9

Oracle over Docker

Containers> Instance container

> Runs database instance> Stores password file & spfile> Access permanent storage from data-only container

Components

Page 19

Database provisioning architecture

10/05/14

[root@srvdocker01 volumes]# pwd/var/lib/docker/volumes

Oracle over Docker Page 20

Accessing the databases...Networking and interfaces

> Networking> Container interfaces

18.11.2015

Oracle over Docker

3 networks available by default

None network> Connects the container only with lo interface J

Host> Duplicates the host network layer

> Includes hostname

Networking

Page 21

Networking and interfaces

10/05/14

[root@srvdocker01 docker]# docker network lsNETWORK ID NAME DRIVER154cc89e0178 bridge bridgeB3358879d364 none null944c26d97cf7 host host

Oracle over Docker

Bridge network> Linked to local virtual interface docker0> Default network interface for containers> Principle of NAT interface

> Ports are exposed by the container> Access is done on host IP address

> Custom bridge can be configured> Use of brctl command

Networking

Page 22

Networking and interfaces

10/05/14

[root@srvdocker01 docker]# ip addr4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UPlink/ether 02:42:60:e5:34:db brd ff:ff:ff:ff:ff:ffinet 172.17.0.1/16 scope global docker0inet6 fe80::42:60ff:fee5:34db/64 scope link

valid_lft forever preferred_lft forever

Oracle over Docker

Bridge network

Networking

Page 23

Networking and interfaces

10/05/14

Physical network

Host

enp0s3: 192.168.56.22docker0: 172.17.0.1

veth51abaf0 veth5ca4828

Container Container

eth0: 172.17.0.2 eth0: 172.17.0.31521 1521

32772 32774

Oracle over Docker

All Linux traditional interfaces available> Service needs to be started at container run

Docker commands> stop / start> pause / unpause> Attach (Detach using Ctrl + Alt + P +Q)

Additional process can be started on running container> docker exec

Container interfaces

Page 24

Networking and interfaces

10/05/14

[root@srvdocker01 docker]# docker exec –it ol7-DBITEST1 /bin/bash

Oracle over Docker Page 25

Accessing the databases...Generating a database container

> Deployment templates> Deployment script> Deploy a database

18.11.2015

Oracle over Docker

Templates to generate a new database> Directories creation script> Password File & Pfile> Tar file of base database backup

> Control File> Incremental level 0> Archivelogs

> RMAN duplicate script

Deployment templates

Page 26

Generating a database container

10/05/14

[root@srvdocker01 template]# pwd/staging/databases/template

[root@srvdocker01 template]#lsbackup_inc0_DBTEMP.tar.gz create_dir.shduplicate.rcv initDBTEMP.oraorapwDBTEMP

Oracle over Docker

Deployment script

Page 27

Generating a database container

10/05/14

Add entry in ORATAB Set environment Get directory

creation scriptAdd & run

directory script

Get pfile Adapt pfile Get template backup

Get & rename password file

Create spfile & startup nomount

Run backup based duplicate Start Listener

Oracle over Docker

Started at container creation> Defined in the image

Deployment script

Page 28

Generating a database container

10/05/14

[root@srvdocker01 docker]# cat DockerFiles/ol7-dbaas/DockerfileFROM oracle-linux/rdbms:tmpMAINTAINER [email protected] 1521

CMD /bin/bash -c "/tmp/run_DBaaS.sh -o ${OPERATION} -s ${TARGET}"

Oracle over Docker

Based on command docker run> -d run in detach mode – background> -P automatically map all exposed ports> -e provide variables values for CMD statement> --volumes-from defines Data-only container to used> --name defines container name

> Defines image used to create the container> No tag specifies> Looks for latest by default

> Script to run at startup depends on CMD statement in the image

Deployment a database

Page 29

Generating a database container

10/05/14

docker run –d –P –e OPERATION=deploy –e TARGET=DBIDB01 --volumes-from=ol7-data --name=ol7-dbodb01 oracle-linux/rdbms

Oracle over Docker

Deployment progress can be followed> Docker logs –f <container>

> tail –f like command

Once deployed> Find corresponding port using docker ps

> Access database> SQLPlus & SQL Developer> Any application

Deployment a database

Page 30

Generating a database container

10/05/14

Docker logs –f ol7-dbodb01

[root@srvdocker01 docker]# docker psCONTAINER ID ...... STATUS PORTS5dda1f7e2dd9 ...... Up 17 minutes 0.0.0.0:32770->1521/tcp

Oracle over Docker

David HueberCOOPrincipal Consultant

Mobile +41 79 963 43 [email protected]

Page 31

Any questions? Please do ask.

Infrastructure at your Service.

We look forward to working with you!

18.11.2015