oracle over docker - doag deutsche oracle · pdf fileoracle over docker david hueber coo ......
TRANSCRIPT
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
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