Docker in the Oracle Universe / WebLogic 12c / OFM 12c

70
munz & more Docker In the ORACLE Universe OTN Tour APAC / South America / 2016 Dr. Frank Munz

Transcript of Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Page 1: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

munz & more

DockerIn the ORACLE UniverseOTN Tour APAC / South America / 2016 Dr. Frank Munz

Page 2: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

2

•Frank Munz

•Founded munz & more in 2007

•15 years Oracle Middleware,Cloud, and Distributed Computing

•Consulting and High-End Training

•Wrote two Oracle andone Cloud book

Page 3: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Docker

Page 4: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

... some basics

Page 5: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

“Docker wasn’tonanyone’sagendafor2014.It’soneveryonesroadmapfor2015.”

AdrianCockroftNetflix

Page 6: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

#OOW2014”...Docker?”

Page 7: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Docker

• Open Source (evolving), written in Go

• Container technology

• Portable standard

• Runs on Linux (Microsoft, MacOS, Solaris)

Google starts2.000.000.000containers per week!

Page 8: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Virtualization vs. Isolation

munz & more #8

Linux+Docker

Hardware

a.war

Dockercontainer inLinuxwithownFS,networkstack/IPaddress,processspaceandresourcelimits->Isolation

Hardware

OVM/VmWare ESX/Xen

Application1

Solaris

Application2

Linux

Application3

Win

ServerVirtualizationtype1hypervisor=onbaremetal

Hardware

MacOS/Win

DesktopVirtualization:type2hypervisor=withhostOS

ejb.jar

y.jarx.py

JDKWebLogic

toolsJython

VirtualBox

Application1

Linux

Application2

Win

Page 9: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Docker

munz & more #9

Linux+Docker

Hardware

a.warejb.jar

y.jar

x.py

JDK

WebLogic

tools

Jython

Docker is not a lightweight VirtualBox- it's about isolation.

Containers run on Linux kernel of host

-> Containers are visible on host

Page 10: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Docker Images

• Package format• Layered incremental,

copy on write file system• “Application with all dependencies” • Create image yourself

or get it from Docker Hub

docker images

munz & more #10

Example Layers:- WLS Domain- WebLogic- Java- Base Image

Page 11: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Docker Container

• Isolated runtime of Docker image• Starts up in milliseconds• Sandboxing uses Linux namespaces and

cgroups (RAM, CPU, filesystem)-> isolated part of your Linux

• Open Container Standard / Linux Foundation

docker run -d –p 3333:9999 fmunz/micro

munz & more #11

Page 12: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Solves the “Worked For Me!” issue

munz & more #12

OStools,JDK,patches,database

driver,libs,appserver,domain,deployment,tools,

scripts

Docker

OSutils,JDK,patches,databasedriver,libs,appserver,domain,deployment,tools,scripts

Integration,Performance,Acceptance

Testing

Production

dockerize it!

You can pass environment variables for specific settings e.g. in prod

Docker Registry

Page 13: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

And Now Automate

• Build Docker images for testing incontinuous delivery pipeline

• Use Jenkins / Hudson hooks or a maven plugin to create / start / stop /delete Docker containers

munz & more #13

Page 14: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

… automate, automate, automate

Various maven plugins available, e.g. R. Huss (Jolokia REST-JMX bridge):https://github.com/rhuss/docker-maven-plugin

munz & more #14

Page 15: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Dockerfile

Manually create container withdocker build Dockerfile

Docker Image

Automatic build

+

Page 16: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Dockerfile

munz & more #16

Manually create container:

docker build –t name .

Page 17: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

the registry

Page 18: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Registry

Public Hosted registry:

• Docker image is not found? pulled from registry

• Push your image to registrydocker push yourname/newimage

• Free account includes 1 private registry

Private On Premise Registry:containerized registry for downloadwith fs and optional in-memory, S3, or Azure data store

munz & more #18

Page 19: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

what could be your biggest nightmare:

unknown and unofficial images(>14000)

Docker Registry

Page 20: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Automated Builds

• Automatically build your images:GitHub account with Dockerfile

• Registry uses GitHub directory structure as build context

• Image is uploaded automatically to Docker hub

-> Trust, up to date, and transparent

Page 21: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

clouds

Page 22: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Docker in the Cloud?

Supported by every major cloud provider:

munz & more #22

On premise -> all clouds

DockerRegistry

DockerContainerService

EC2ContainerService

GoogleContainerEngine

AzureContainerService

Bluemix Containers

Page 23: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Oracle Cloud and DockerOracle Container Cloud Service (announced)• You can run your Docker containers and orchestrate them• This will work with a public registry

Application Container Cloud Service• Uses Docker containers to run your

Java or JavaScript application

Compute Cloud Service• Manually run your containers

munz & more #23

Page 24: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

munz & more #24

Page 25: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

OCCS Preview @ OOW 2016

munz & more #25

Page 26: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

OCCS @ OOW 2016

We run the first public Docker image (mine!) on OCCS at OOW 2016.

munz & more #26

Page 27: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

munz & more #27

Page 28: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

demo?

Page 29: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Small Images / Microservices

You can have a real service in ...

Possible Options:busybox andstatic binary

munz & more #29

Page 30: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Simple Life Inside Container

munz & more #30

processes

FS

mounts

Page 31: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

#3

Security

Page 32: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

$ docker run -d –p 8080:9999 fmunz/micro

Page 33: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

vs.

Page 34: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Mistery Box

A stranger gives you a box at night and asks you to connect it to your company network.

Would you do it?

Page 35: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Suggestions

• Use trusted images / with known Dockerfile

• Kernel features are well established – cgroups (2006, merged into 2.6.24 kernel)

– namespaces (initial kernel patch 2.4.19)

• Docker can use TLS (client to daemon)

• Docker images can be signed

• Think (twice) about pulling images frompublic repos / Docker hub

munz & more #35

Page 36: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

FUD

"Docker is like chroot() on steroids."

Yes: It's easy to escape chroot() environment

No: Docker does not use chroot()-> it uses namespaces

munz & more #36

Page 37: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Linux Capabilities

• Privileged container: like having root on host

• Capabilities -> Break down power of root

• Examine PID 1 capabilities with getpcaps:

munz & more #37

Page 38: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

"Containers don't contain!"

Quote by D. Walsh, Mr. SE Linux <- !!SELinux = what a process is able to do based on rules.

Enforcement:

containerProcessTypecan only read/exec/user files

and only write to containerFilesType

munz & more #38

A really bad idea: setenforce 0

Page 39: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

… more Suggestions

• Drop privileges as quickly as possible• Treat root in container as root outside

(although it isn't) • No secrets in images• Combine Docker with

SELinux, AppArmor and / or virtualization• Host can always access container

Note: Public PaaS do not simply spin up Docker containers!

munz & more #39

Page 40: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Cheat Sheet

munz & more

Source:Container-Solutions.com

Page 41: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Conclusion

• You have to deal with Docker securitydepending on your use case

• Note: Public PaaS are not just spinning up Docker containers they use SELinux, VMs,…

• Docker is not a risk per sebut new technology with different challenges.

munz & more #41

Page 42: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Docker in Production?

Page 43: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

WebLogicin a DockerContainer!

Page 44: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Docker Style

• Independent appserver in container

• Microservices style architecture

• Just add your favorite Docker cluster manager

munz & more #44

OStools,JDK,databasedriver,libs,appserver,single/selfcontained

domain,deployment,tools,

scripts

Page 45: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

JDK,WLS,DomaincreateServer.sh:

createsmachine/NM,startsNM,

createsmanServ,startsmanServ

Links (OLD): WebLogic Example

munz & more #45

$docker run -d --link wlsadmin:wlsadminfmdom1 createServer.sh

$docker run -d -p 8001:8001 --name=wlsadminfmdom1 startWebLogic.sh

JDK,WLS,Domain

startWebLogic.sh

startsAdminServer

wlsadmin

JDK,WLS,DomaincreateServer.sh:

createsmachine/NM,startsNM,

createsmanServ,startsmanServ

connect to admindue to --link:/etc/hosts172.17.1.99wlsadmin 31a1baaf

OLD STYLE!Use Networks now…port8001 IP:port 7001

ManagedServers

--link

Page 46: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Docker in the Oracle Universe

Page 47: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

OracleProduct inDocker OfficialSupport?

GlassFish

MySQL yes

NoSQL

OpenJDK

OracleLinux yes

OracleCoherence yes

OracleDatabase Dockerfile avail

OracleHTTPServer yes

OracleJDK yes

OracleTuxedo yes

OracleWebLogic yes #47^

Oracle support does not require you to use the provided Docker files!

Page 48: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

https://github.com/oracle/docker-images

munz & more #48

Page 49: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

WebLogic: What Do You Get?

• NOT WebLogic from Docker registry• NO automatic build via github

• Github repo with scripts to set up WebLogic on Oracle Linux in Docker

• Generic distribution• Docker is a supported

environment forWebLogic 12.1.3+

munz & more #49

Page 50: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Just Drop Server JRE and WLS Installer

munz & more #50

$ cd java-8$ docker build -t oracle/jdk:8 .Sending build context to Docker daemon 4.096 kBStep 1 : FROM oraclelinux:latestlatest: Pulling from library/oraclelinux10ec637c060c: Downloading 4.865 MB/97.84 MB...

$ sh buildDockerImage.sh -g -v 12.2.1.1...

Page 51: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Dockerfile

$docker build -t wls:latest .

Dockerfile and Scripts (from Oracle github)

WebLogicDocker Image(no domain)

Page 52: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Extend the WLS-only image

Sample script provided:

• Dockerfile to extend WLS image

• Run WLST script to create domain

• Create boot.properties

• Expose NM, Server ports

munz & more #52

LinuxBaseImage

JDKImage

WebLogicImage

WLSDomainImage

Page 53: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Docker Compose

munz & more #53

docker-compose.yml

With –f you can have multiple Docker Compose YAML files

Page 54: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Docker Networking

Page 55: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Networking: Facts to Know

• Docker --link only works on single host-> regarded as deprecated now

• Networking supported since Docker 1.9

• SDN network that spans hosts:Libnetwork implementsContainer Networking Model (CNM):Endpoint / Network / Sandbox

munz & more #55

Page 56: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Overlay Network

munz & more #56

Page 57: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

munz & more #57

OracleWebLogic/samples/1221-multihost:

Page 58: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Orchestration /Cluster Manager

Page 59: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Setup Swarm and Machine

1. Create Swarm ID

2. Create Machine with Swarm master

3. Create Machine with Swarm agent01 / 02

4. Set Docker env for Swarm master

munz & more #59

Page 60: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Docker Swarm

• Native Docker cluster-> same API as a single engine

• Fast provisioning, about 500 msec• Scheduling Algo: spread, binpack, rand• Features are optional,

you can continue use Kubernetes etc.

• There is NO insecure mode J

munz & more #60

Page 61: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Docker Swarm

Since Docker 1.12• Swarm is merged with Docker engine:

– Load balancer included– Service discovery– Cluster scheduler

• Swarm has many features like Google's Kubernetes- easier to get started

munz & more #61

Page 62: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Docker Machine

• Provision Docker in VirtualBox, Vmware, GCE, AWS, DigitalOcean etc.

docker-machine \create -d=virtualbox default

• Mac OS's boot2docker is replacedby Docker Machine, which againis replaced by native Docker on Mac now

munz & more #62

Page 63: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Updates Images?

You could use Docker copy command –yet it’s not hip in the cloud to update.Just rebuild the container.

munz & more #63

“Servers are cattle. Not pets.”

-> immutable server

Page 64: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

My Predictions

• Swarm will take its share from Kubernetes.

• You will not dockerize 90% of your enterprise IT in the next 18 months.

• Docker is the new Linux.Be ready to experience that feeling we had with Linux 13 years ago J

munz & more #64

Page 65: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Conclusion

• Docker is ready for prime time!

• Docker itself, but more so cluster managers are still evolving

• Docker is not a security risk, but make sure to tick off the security checklist

• Oracle caught the trend early – good!

• Many products supported, more to come?

munz & more #65

Page 66: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

http://www.oracle.com/us/products/middleware/cloud-app-foundation/weblogic/weblogic-server-on-docker-wp-2742665.pdf

OracleWhitepaperWebLogiconDocker

Page 67: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

munz & more #67

Good Docker book byJ. Turnbull (covering Docker 1.12)

Page 68: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

Thank You!

Page 69: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

tweet to win!

#otntour AND @soacommunity

@frankmunz

+picture?

Page 70: Docker in the Oracle Universe / WebLogic 12c / OFM 12c

www.munzandmore.com/blog

facebook.com/cloudcomputingbookfacebook.com/weblogicbook

@frankmunz

youtube.com/weblogicbook-> more than 50 web casts

Don’t be

shy J