My team is looking at changing the way we manage Oracle. First, we are looking at migrating off of Exadata and onto a different architecture. But more fundamentally, we are questioning how we deliver database services and how we can drive innovation within the company by changing our processes and/or technologies.
Docker has come up as one such technology. We have a lot of developers moving toward microcservice architectures and they need a good way to quickly spin up databases for development. We also need to better standardize our processes across data platforms and improve our ability to scale environments based on a number of factors. Adeesh Fulay did a great job of showing the state of containers as it pertains to the Oracle database. The short is that Oracle and LXC are very mature, while Docker is quickly closing. I am still very interested in seeing how we can leverage Docker containers and orchestration to improve our efficiency with Oracle as well as our other platforms. My notes are:
Why Containers?
- Comparison to Shipping Goods
- Intermodal Shipping Contianer
- Issue similar with IT
- App with list of steps to deploy
- Prone to mistakes
- Need to solve dependency challenges
- Also need to make good on promise of virtualization to provide mobility
- Docker
- Developer: Build once, Run anywhere
- Operator: Configure once, Run Anything
Linux Container Overview
- VM contains app and: Guest OS, libraries, etc.
- Containers: No OS or Hypervisor
- Own network interface
- file system
- Isolation (security) – linux kernel’s namespaces
- Isolation(resource usage) – linux kernel’s cgroups
- Why
- OS-Based Lightweight Virtualization technology
- Content & Resource Isolation
- Better Performance
- Better Efficiency and smaller footprint
- Build, Ship, Deploy anywhere
- Separation of Duties
- Types
- Application Containers
- Docker
- Requires application to be repackaged and reconfigured to work with Docker image format
- One container, one app (primary app)
- patch by replacing containers
- good for modern applications
- System Containers
- Each container runs an entire service stack
- LXC, OpenVZ, Solaris Zones
- No need to reconfigure applications
- Patch in place
- good for legacy apps
- Oracle and Docker
- No RAC on Docker
- LXC Support http://ww.oracle.com/technetwork/database
Look Under the Hood
- LXC is more mature with Oracle
- Docker Host
- daemon/engine – manages networking, images, containers, (data) volumes, plugins, orchestration, etc.
- images
- Dockerfile
- Instructions for turning base image into a new docker image
- containers
- Like a directory. It is created from an image, and contains everything required to run an app. Containers like VMs have state and are portable.
- Containerd: Simple daemon that uses run times to manage
- Volumes
- Supports local or shared/distributed
- Choose between mobility & performance
- Docker outsourced issue of storage to other vendors
- Networking
- Types:
- None: no external network
- Host: shard host n/w stack
- Bridge: NATing, exposing ports, poor performce
- macvlan: uses host subnet, VLAN, swarm mode
- Overlay: multi-host VXLAN, swarm mode
- 3rd Party: OpenvSwitch, Weave, etc..
- Orchestration
- kubernetes
- Mesos
- Docker Swarm
- Rancher
- Nomad
- ROBIN
- Docker client
- docker build
- docker pull
- docker run
- Registry – Public or Private contains pre-build images
Getting Hands Dirty
Containerized Databases
Oracle late to the party but quickly catching up. Has joined CNCF. Working with kubernetes. Using in Oracle cloud.
Advantages
- Advantages of VMs without the performance penalty