SlideShare a Scribd company logo
Docker,	
  Kubernetes	
  and	
  Mesos	
  for	
  
Java	
  Developers
Arun Gupta, @arungupta
Docker Captain, Java Champion
©2016	
  Couchbase	
  Inc. 2
©2016	
  Couchbase	
  Inc.
What	
  is	
  Docker?
▪Open source project and company









▪Used to create containers for software applications
▪Package Once Deploy Anywhere (PODA)
3
©2016	
  Couchbase	
  Inc. 4
Mac OS X Ubuntu CentOSWindows
{J,W,E}AR
Mac OS X Ubuntu CentOSWindows
Image
WORA = Write Once Run Anywhere
PODA = Package Once Deploy Anywhere
©2016	
  Couchbase	
  Inc.
Docker	
  Mission
5
Build Ship Run
Anywhere
Distributed/Applications
©2016	
  Couchbase	
  Inc. 6
©2016	
  Couchbase	
  Inc. 7
FROM ubuntu



CMD echo “Hello world”
FROM java


COPY target/hello.jar /usr/src/hello.jar



CMD java -cp /usr/src/hello.jar org.example.App
©2016	
  Couchbase	
  Inc. 8
http://docs.docker.com/engine/reference/builder/
©2016	
  Couchbase	
  Inc.
Docker	
  Workflow
9
©2016	
  Couchbase	
  Inc.
Union	
  File	
  System
10
Bootfs/Kernel
Image java:8
Image buildpack-deps:jessie-scm
Image buildpack-deps:jessie-curl
Base Image debian:jessie
©2016	
  Couchbase	
  Inc.
Image	
  Layers	
  -­‐	
  Couchbase
~ > docker images couchbase
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
couchbase latest 45abdd57689a 3 weeks ago 372 MB
~ > docker history couchbase
IMAGE CREATED CREATED BY SIZE
COMMENT
45abdd57689a 3 weeks ago /bin/sh -c #(nop) VOLUME [/opt/couchbase/var] 0 B
dd8c5611343d 3 weeks ago /bin/sh -c #(nop) EXPOSE 11207/tcp 11210/tcp 0 B
30852bbad62b 3 weeks ago /bin/sh -c #(nop) CMD ["couchbase-server"] 0 B
5537747ea12f 3 weeks ago /bin/sh -c #(nop) ENTRYPOINT &{["/entrypoint. 0 B
e8a83a5448df 3 weeks ago /bin/sh -c #(nop) COPY file:cbb44c9c65b64a9dc 182 B
18165b90fefa 3 weeks ago /bin/sh -c #(nop) COPY file:34e32c52f0895191f 389 B
5f37b8bdc5a6 3 weeks ago /bin/sh -c wget -N $CB_RELEASE_URL/$CB_VERSIO 212.1 MB
1a8da511d01b 3 weeks ago /bin/sh -c groupadd -g 1000 couchbase && user 328.7 kB
d9b2222c39b4 3 weeks ago /bin/sh -c #(nop) ENV CB_VERSION=4.0.0 CB_REL 0 B
815f08b3c781 3 weeks ago /bin/sh -c apt-get update && apt-get inst 23.57 MB
fc38f156c0ea 3 weeks ago /bin/sh -c #(nop) MAINTAINER Couchbase Docker 0 B
2a7a952931ec 3 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B
10f1b5844a9c 3 weeks ago /bin/sh -c sed -i 's/^#s*(deb.*universe)$/ 1.911 kB
23c388b926b6 3 weeks ago /bin/sh -c echo '#!/bin/sh' > /usr/sbin/polic 156.2 kB
b45376f323f5 3 weeks ago /bin/sh -c #(nop) ADD file:4a9e089e81d6581a54 135.9 MB
11
©2016	
  Couchbase	
  Inc.
Image	
  Layers	
  -­‐	
  Java
~ > docker images java
REPOSITORY TAG IMAGE ID CREATED SIZE
java openjdk-8-jdk-alpine 78afabc37d4f 6 days ago 145.5 MB
java 8 f298aed75633 6 days ago 642.9 MB
java latest f298aed75633 6 days ago 642.9 MB

~ > docker history java
IMAGE CREATED CREATED BY SIZE
COMMENT
f298aed75633 6 days ago /bin/sh -c /var/lib/dpkg/info/ca-certificates 418.2 kB
<missing> 6 days ago /bin/sh -c set -x && apt-get update && apt- 349.2 MB
<missing> 6 days ago /bin/sh -c #(nop) ENV CA_CERTIFICATES_JAVA_VE 0 B
<missing> 6 days ago /bin/sh -c #(nop) ENV JAVA_DEBIAN_VERSION=8u7 0 B
<missing> 6 days ago /bin/sh -c #(nop) ENV JAVA_VERSION=8u72 0 B
<missing> 6 days ago /bin/sh -c #(nop) ENV JAVA_HOME=/usr/lib/jvm/ 0 B
<missing> 6 days ago /bin/sh -c { echo '#!/bin/sh'; echo 'set 87 B
<missing> 6 days ago /bin/sh -c #(nop) ENV LANG=C.UTF-8 0 B
<missing> 6 days ago /bin/sh -c echo 'deb http://httpredir.debian. 61 B
<missing> 6 days ago /bin/sh -c apt-get update && apt-get install 1.289 MB
<missing> 2 weeks ago /bin/sh -c apt-get update && apt-get install 122.6 MB
<missing> 2 weeks ago /bin/sh -c apt-get update && apt-get install 44.32 MB
<missing> 2 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B
<missing> 2 weeks ago /bin/sh -c #(nop) ADD file:b5391cb13172fb513d 125.1 MB
12
©2016	
  Couchbase	
  Inc.
Docker	
  Machine
▪Create Docker Host on computer or cloud provider



docker-machine create --driver=virtualbox myhost
– Configure Docker client to talk to host
– Create and pull images
– Start, stop, restart containers
– Upgrade Docker
13
©2016	
  Couchbase	
  Inc.
Docker	
  Machine	
  Providers
14
©2016	
  Couchbase	
  Inc.
Docker	
  for	
  Mac/Windows
▪Native user interface and auto-update capability
▪No VirtualBox!
– OSX: xhyve VM using Hypervisor.framework
– Windows: Hyper-V VM
▪Better networking and filesystem mounting/notification
15
©2016	
  Couchbase	
  Inc.
Docker	
  Toolbox
▪Docker Client
▪Docker Machine
▪Docker Compose
▪Docker Kitematic
▪Boot2Docker ISO
▪Virtualbox
16
https://www.docker.com/toolbox
©2016	
  Couchbase	
  Inc.
Docker	
  Compose	
  -­‐	
  One	
  Service
17
version: “2”
services:
db:
image: couchbase
volumes:
- ~/couchbase:/opt/couchbase/var
ports:
- 8091:8091
- 8092:8092
- 8093:8093
- 11210:11210
©2016	
  Couchbase	
  Inc.
Docker	
  Compose	
  -­‐	
  Two	
  Services
18
GET
POST
PUT
DELETE
CRUD
using
N1QL
©2016	
  Couchbase	
  Inc.
Docker	
  Compose
▪Defining and running multi-container applications
▪Configuration defined in one or more files
– docker-compose.yml (default)
– docker-compose.override.yml (default)
– Multiple files specified using -f
– All paths relative to base configuration file
▪Great for dev, staging, and CI
19
©2016	
  Couchbase	
  Inc.
version: “2”
services:
db:
container_name: "db"
image: couchbase
ports:
- 8091:8091
- 8092:8092
- 8093:8093
- 11210:11210
web:
image: arungupta/wildfly
environment:
- COUCHBASE_URI=db
ports:
- 8080:8080
- 9990:9990
Docker	
  Compose	
  -­‐	
  Two	
  Services
20
©2016	
  Couchbase	
  Inc.
Overriding	
  Services	
  in	
  Docker	
  Compose
21
mywildfly:
image: jboss/wildfly
ports:
- 8080:8080
docker-compose.yml
mywildfly:
ports:
- 9080:8080
docker-compose.override.yml
docker-compose up -d
©2016	
  Couchbase	
  Inc.
Dev/Prod	
  with	
  Compose
22
mycouchbase:
container_name: "db-dev"
image: arungupta/couchbase
ports:
- . . .
mywildfly:
image: arungupta/wildfly
environment:
- COUCHBASE_URI=db-dev:8093
ports:
- 8080:8080
mywildfly:
environment:
- COUCHBASE_URI=db-prod:8093
ports:
- 8080:80
mycouchbase:

container_name: "db-prod"
docker-compose.yml
production.yml
docker-compose up 

-f docker-compose.yml 

-f production.yml
-d
docker-compose up -d
©2016	
  Couchbase	
  Inc.
Multi-­‐host	
  Networking
23
©2016	
  Couchbase	
  Inc.
Default	
  Networks
24
Network Name Purpose
bridge Default network that containers connect to
none Container-specific networking stack
host Adds container on hosts networking stack
docker network ls
NETWORK ID NAME DRIVER
8cf651cafbef bridge bridge
14e63204639e none null
96901337c96f host host
©2016	
  Couchbase	
  Inc.
Multi-­‐host	
  Networking
▪Create virtual networks and attach containers
▪Bridge network span single host
▪Overlay network spans multiple hosts
– Uses libnetwork (built-in VXLAN-based overlay network driver) and Docker’s
libkv
▪Works with Swarm and Compose
▪Pluggable: Calico, Cisco, Weave, . . .
25
©2016	
  Couchbase	
  Inc.
docker network
26
docker network --help
Usage: docker network [OPTIONS] COMMAND [OPTIONS]
Commands:
disconnect Disconnect container from a network
inspect Display detailed network information
ls List all networks
rm Remove a network
create Create a network
connect Connect container to a network
©2016	
  Couchbase	
  Inc.
Application	
  Code
27
CouchbaseCluster.create(System.getenv(“COUCHBASE_URI”));
version: “2”
services:
db:
container_name: "db"
image: couchbase
ports:
- 8091:8091
- 8092:8092
- 8093:8093
- 11210:11210
web:
image: arungupta/wildfly-admin
environment:
- COUCHBASE_URI=db
ports:
- 8080:8080
- 9990:9990
©2016	
  Couchbase	
  Inc.
Docker	
  Swarm
▪Native clustering for Docker
▪Provides a unified interface to a pool of Docker hosts
▪Fully integrated with Machine and Compose
▪Serves the standard Docker API
▪1.1 - Ready for production
– Reschedule containers when a node fails (experimental)
– Better node management
28
Stress tested on 1000 EC2 nodes, ~30k containers
©2016	
  Couchbase	
  Inc. 29
©2016	
  Couchbase	
  Inc.
Scheduling	
  Backends
▪ Based on CPU (-c), RAM (-m), number of containers
▪ docker machine create —strategy <value>
– spread (default): node with least number of running containers
– binpack: node with most number of running containers
– random: mostly for debugging
▪ API for pluggable backends (e.g. Mesos) coming
30
©2016	
  Couchbase	
  Inc.
Machine	
  +	
  Swarm	
  +	
  Compose
31
©2016	
  Couchbase	
  Inc.
Persistent	
  Storage
▪Data volumes - used to persist data independent of container’s
lifecycle
▪Multiple plugins: Flocker, Ceph, . . .
32
docker volume --help
Usage: docker volume [OPTIONS] [COMMAND]
Manage Docker volumes
Commands:
create Create a volume
inspect Return low-level information on a volume
ls List volumes
rm Remove a volume
©2016	
  Couchbase	
  Inc.
Persistent	
  Storage
33
docker volume create —name=data data
docker run -it -v data:/opt/couchbase/var couchbase
Create a volume
Run a container with the volume
©2016	
  Couchbase	
  Inc. 34
©2016	
  Couchbase	
  Inc. 35
©2016	
  Couchbase	
  Inc. 36
©2016	
  Couchbase	
  Inc. 37
©2016	
  Couchbase	
  Inc. 38
©2016	
  Couchbase	
  Inc. 39
mycouchbase:
container_name: "db"
image: arungupta/couchbase
ports:
- 8091:8091
- 8092:8092
- 8093:8093
- 11210:11210
mywildfly:
image: arungupta/wildfly-admin
environment:
- COUCHBASE_URI=db
ports:
- 8080:8080
- 9990:9990
Master Node 01 Node 02
Discovery

Service
http://blog.arungupta.me/docker-machine-swarm-compose-couchbase-wildfly/
©2016	
  Couchbase	
  Inc.
Docker	
  Machine	
  +	
  Compose	
  +	
  Swarm
40
Swarm Master
Swarm Node 01
Swarm Node 02
Consul Machine
version: "2"
services:
db:
image: arungupta/couchbase
network_mode: "host"
ports:
- 8091:8091
- 8092:8092
- 8093:8093
- 11210:11210
scale db=2
docker-compose
©2016	
  Couchbase	
  Inc.
Docker	
  Machine	
  +	
  Compose	
  +	
  Swarm
41
Swarm Master A
Swarm Node A1
Swarm Node A2
Consul Machine
Swarm Master B
Swarm Node B1
Swarm Node B2
version: "2"
services:
db:
image: arungupta/
couchbase
network_mode: "host"
ports:
- 8091:8091
- 8092:8092
- 8093:8093
- 11210:11210
XDCR
©2016	
  Couchbase	
  Inc.
Docker	
  Mission
42
BUILD
Developer(Workflows
SHIP
Registry(Services
RUN
Management
Ecosystem3Partners
Docker3Engine
Docker3Toolbox
Docker3Trusted3Registry3 Docker3Universal3Control3Plane
Docker3Hub Tutum by3Docker
Infrastructure
Compute,(Volumes,(Networking
Clustering3&3Scheduling3
(Orchestration)
Service3Discovery
Plugins
Getting	
  Started	
  with	
  Kubernetes
Arun Gupta, @arungupta
VP Developer Advocacy, Couchbase
©2016	
  Couchbase	
  Inc. 44
dzone.com/refcardz/kubernetes-essentials
©2016	
  Couchbase	
  Inc.
Kubernetes
▪Open source orchestration system for Docker containers
▪Provide declarative primitives for the “desired state”
– Self-healing
– Auto-restarting
– Schedule across hosts
– Replicating
45
©2016	
  Couchbase	
  Inc.
Concepts
▪Pods: collocated group of Docker
containers that share an IP and storage
volume
▪Service: Single, stable name for a set
of pods, also acts as LB
▪Label: used to organize and select
group of objects
▪Replication Controller: manages the
lifecycle of pods and ensures specified
number are running
46
Node
Pod 1 Pod 2
C1 C2 C3
Pod 1
Couchbase
Pod 2
Couchbase
Service “db”
port 8091 port 8091
Docker
©2016	
  Couchbase	
  Inc.
Components
▪Node: Docker host running kubelet
(node agent) and proxy services
– Monitored by systemd (CentOS)
or monit (Debian)
▪Master: hosts cluster-level control
services, including the API server,
scheduler, and controller manager
▪etcd: distributed key-value store used
to persist Kubernetes system state
47
Node
kubelet proxy
Docker
Pod 1 Pod 2
C1 C2 C3
Node
kubelet proxy
Docker
Pod 1 Pod 2
C1 C2 C3
Node
kubelet proxy
Node
Pod 1 Pod 2
C1 C2 C3
Master
API Server Scheduler
Controller Manager
©2016	
  Couchbase	
  Inc.
Worker Docker
Worker
Worker
Pod
Containers
Architecture
Kubelet
Docker Kubelet
Docker Kubelet
Master
Master
Master
Kubelet
©2016	
  Couchbase	
  Inc. 49
©2016	
  Couchbase	
  Inc.
Master	
  High	
  Availability
▪Hack by running a podmaster utility
▪Proposal
– Hot Standby
– Warm Standby
– Active-Active (Load Balanced)
50
http://kubernetes.io/v1.1/docs/proposals/high-availability.html
©2016	
  Couchbase	
  Inc.
kubectl
▪Controls the Kubernetes cluster manager
▪kubectl get pods or minions
▪kubectl create -f <filename>
▪kubectl update or delete
▪kubectl resize —replicas=3 replicationcontrollers
<name>
51
©2016	
  Couchbase	
  Inc.
Kubernetes	
  Config
52
©2016	
  Couchbase	
  Inc. 53
export KUBERNETES_PROVIDER=vagrant
./cluster/kube-up.sh
Mac OS X
Kubernetes (Vagrant)
Master Node
©2016	
  Couchbase	
  Inc. 54
https://get.k8s.io/
©2016	
  Couchbase	
  Inc.
A	
  Pod	
  with	
  One	
  Container
55
Mac OS X
Kubernetes (Vagrant)
Master
Node
Pod
Docker

(WildFly)
©2016	
  Couchbase	
  Inc.
Services
▪Abstract a set of pods as a single IP and port
– Simple TCP/UDP load balancing
▪Creates environment variables in other pods
▪Stable endpoint for pods to reference
– Allows list of pods to change dynamically
56
©2016	
  Couchbase	
  Inc.
Services
57
Node
Pod
Docker

(WildFly)
Pod
Docker

(Couchbase)
Couchbase
Service
©2016	
  Couchbase	
  Inc.
“backend”
“frontend”
Services
58
Couchbase
Service
Replication
Controller
Pod
Container
©2016	
  Couchbase	
  Inc.
Amazon Web Services
“worker”“master”
Services	
  -­‐	
  AWS
59
“worker”
Kubernetes Cluster
Pod
Couchbase
Docker
Container
Replication

Controller Publicly
accessible
Service
©2016	
  Couchbase	
  Inc.
Google Cloud
“worker”“master”
Services	
  -­‐	
  GCE
60
“worker”
Kubernetes Cluster
Pod
Couchbase
Docker
Container
Replication

Controller Publicly
accessible
Service
©2016	
  Couchbase	
  Inc.
Microsoft Azure
“worker”“master”
Services	
  -­‐	
  Azure
61
“worker”
Kubernetes Cluster
Pod
Couchbase
Docker
Container
Deployment Publicly
accessible
Service
“worker”
©2016	
  Couchbase	
  Inc.
Services
62
©2016	
  Couchbase	
  Inc.
Node 2
Service	
  across	
  Two	
  Nodes
63
Node 1
Pod
Docker

(WildFly)
Pod
Docker

(Couchbase)
Couchbase
Service
©2016	
  Couchbase	
  Inc.
Replication	
  Controller
▪Ensures that a specified number of pod "replicas" are running
– Pod templates are cookie cutters
– Rescheduling
– Manual or auto-scale replicas
– Rolling updates
▪Recommended to wrap a Pod or Service in a RC
▪Only appropriate for Pods with Restart=Always policy (default)
64
©2016	
  Couchbase	
  Inc.
Replication	
  Controller	
  Configuration
65
©2016	
  Couchbase	
  Inc.
Replication	
  Controller
66
Master
Node 1
Pod 1
Couchbase
Node 2
Node 3
Replication

Controller
Pod 2
Couchbase
©2016	
  Couchbase	
  Inc.
Replication	
  Controller:	
  Automatic	
  Rescheduling
67
Node 1
Node 2
Node 3
Pod 1
Couchbase
Pod 2
Couchbase
Node 1
Node 2
Node 3
Pod 1
Couchbase
Pod 2
Couchbase✘
Node 1
Node 2
Node 3
Pod 1
Couchbase
Pod 3
Couchbase
Node 1
Node 2
Node 3
Pod 3
Couchbase
Pod 1
Couchbase
OR
©2016	
  Couchbase	
  Inc.
Replication	
  Controller:	
  Scaling
68
kubectl.sh

scale

--replicas=3

rc

couchbase-rc
Node 1
Node 2
Node 3
Pod 1
Couchbase
Pod 2
Couchbase
Node 1
Node 2
Node 3
Pod 1
Couchbase
Pod 3
Couchbase
Pod 2
Couchbase
Node 1
Node 2
Node 3
OR
Pod 3
Couchbase
Pod 3
Couchbase
Pod 1
Couchbase
©2016	
  Couchbase	
  Inc.
Sample	
  Production	
  Deployment
▪www.wombatsoftware.de
▪shopadvisors.de: E-commerce optimization and monitoring tools for
increase of sales
69
©2016	
  Couchbase	
  Inc.
Sample	
  Production	
  Deployment
70
32 Core
160 GB RAM
Load Containers
Normal 400
Peak 600
©2016	
  Couchbase	
  Inc.
Health	
  Checks
▪Restarts Pod, if wrapped in RC
▪Application-level health checks
– HTTP
– Container Exec
– TCP Socket
▪Health checks performed by Kubelet
71
©2016	
  Couchbase	
  Inc.
Kubernetes	
  using	
  Docker
72
https://github.com/arun-gupta/docker-images/blob/master/kubernetes/docker-compose.yml
©2016	
  Couchbase	
  Inc.
Kubernetes	
  using	
  Docker
73
Mac OS X
Docker Machine
Kubernetes (Docker Compose)
etcd Master Proxy
Pod
Application Container
Recommended
starting point
http://kubernetes.io/v1.0/docs/getting-started-guides/docker.html
©2016	
  Couchbase	
  Inc.
OpenShift	
  3
74
Mac OS X
Vagrant Box (OpenShift 3)
Kubernetes
Docker
Registry
Master
OpenShift
Registry Proxy
Pod
Router
©2016	
  Couchbase	
  Inc.
References
▪github.com/javaee-samples/docker-java
▪kubernetes.io
▪Containers recipe: couchbase.com/containers
75
Getting	
  Started	
  with	
  Mesos
Arun Gupta, @arungupta
VP Developer Advocacy, Couchbase
©2016	
  Couchbase	
  Inc.
Mesos
▪Open source cluster manager
▪Developed at UC Berkeley
▪Provides resource isolation and sharing across distributed
applications
▪Run distributed systems on the same pool of nodes
– Hadoop, Spark, Jenkins, Couchbase, …
▪Cluster monitoring
▪Tasks isolated via Linux containers
77
©2016	
  Couchbase	
  Inc.
Mesos
▪Master Slave architecture
▪Fault tolerant
– Leader election via ZooKeeper
▪Multi platform
– Ubuntu, Mac OS, CentOS
78
©2016	
  Couchbase	
  Inc.
Mesos	
  Architecture
79
http://mesos.apache.org/documentation/latest/architecture/
©2016	
  Couchbase	
  Inc. 80
Master
Master
(standby)
Master
(standby)
ZooKeeper
Quorum
Slave Slave Slave Slave
http://mesos.apache.org/documentation/latest/architecture/
Marathon Kubernetes Spark
Aurora
Marathon
Executor
Task
Frameworks
©2016	
  Couchbase	
  Inc.
Frameworks
▪Frameworks are targeted at a use case and domain-specific
– Master node “offers” resources to each framework
– Framework “accepts” the offer and execute applications
▪Framework has “scheduler” and “executor”
– Scheduler registers with the master for “offer”
– Executor launched on slave nodes to run the task
– Passes a description of the task to run
81
©2016	
  Couchbase	
  Inc. 82
Master
Slave Slave Slave Slave
<s1, 4GB, 4CPU, …>
Job 1 Job 2
<s1, 2GB, 2CPU, …>

<s4, 4GB, 4CPU, …>
Allocation
Module
Scheduler
Job 1 Job 2
Scheduler
<t1, s1, 2GB, 2CPU, …>
<t2, s4, 2GB, 4CPU, …>
<s4, 4GB, 4CPU, …>
<m, t1, s1, 2GB, 2CPU, …>
<m, t2, s4, 2GB, 4CPU, …>
1
1
2
3
4
4
5
http://mesos.apache.org/documentation/latest/architecture/
©2016	
  Couchbase	
  Inc. 83
©2016	
  Couchbase	
  Inc.
References
▪github.com/javaee-samples/docker-java
▪mesos.apache.org/
▪Containers recipe: couchbase.com/containers
84

More Related Content

What's hot

Using Kubernetes for Continuous Integration and Continuous Delivery. Java2days
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2daysUsing Kubernetes for Continuous Integration and Continuous Delivery. Java2days
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2days
Carlos Sanchez
 
Docker for Java Developers
Docker for Java DevelopersDocker for Java Developers
Docker for Java Developers
NGINX, Inc.
 
Continuous Integration and Kamailio
Continuous Integration and KamailioContinuous Integration and Kamailio
Continuous Integration and Kamailio
Giacomo Vacca
 
Docker - From Walking To Running
Docker - From Walking To RunningDocker - From Walking To Running
Docker - From Walking To Running
Giacomo Vacca
 
douban happyday docker for daeqaci
douban happyday docker for daeqacidouban happyday docker for daeqaci
douban happyday docker for daeqaci
Tianwei Liu
 
Rami Sayar - Node microservices with Docker
Rami Sayar - Node microservices with DockerRami Sayar - Node microservices with Docker
Rami Sayar - Node microservices with Docker
Web à Québec
 
Container Orchestration @Docker Meetup Hamburg
Container Orchestration @Docker Meetup HamburgContainer Orchestration @Docker Meetup Hamburg
Container Orchestration @Docker Meetup Hamburg
Timo Derstappen
 
Mesos swam-kubernetes-vds-02062017
Mesos swam-kubernetes-vds-02062017Mesos swam-kubernetes-vds-02062017
Mesos swam-kubernetes-vds-02062017
Christophe Furmaniak
 
Docker 進階實務班
Docker 進階實務班Docker 進階實務班
Docker 進階實務班
Philip Zheng
 
Scaling Development Environments with Docker
Scaling Development Environments with DockerScaling Development Environments with Docker
Scaling Development Environments with Docker
Docker, Inc.
 
Docker for (Java) Developers
Docker for (Java) DevelopersDocker for (Java) Developers
Docker for (Java) Developers
Rafael Benevides
 
Docker Basics & Alfresco Content Services
Docker Basics & Alfresco Content ServicesDocker Basics & Alfresco Content Services
Docker Basics & Alfresco Content Services
Sujay Pillai
 
Was liberty profile and docker
Was liberty profile and dockerWas liberty profile and docker
Was liberty profile and dockersflynn073
 
Docker From Scratch
Docker From ScratchDocker From Scratch
Docker From Scratch
Giacomo Vacca
 
Using Kubernetes for Continuous Integration and Continuous Delivery
Using Kubernetes for Continuous Integration and Continuous DeliveryUsing Kubernetes for Continuous Integration and Continuous Delivery
Using Kubernetes for Continuous Integration and Continuous Delivery
Carlos Sanchez
 
Vagrant + Docker provider [+Puppet]
Vagrant + Docker provider [+Puppet]Vagrant + Docker provider [+Puppet]
Vagrant + Docker provider [+Puppet]
Nicolas Poggi
 
Docker at Shopify: From This-Looks-Fun to Production by Simon Eskildsen (Shop...
Docker at Shopify: From This-Looks-Fun to Production by Simon Eskildsen (Shop...Docker at Shopify: From This-Looks-Fun to Production by Simon Eskildsen (Shop...
Docker at Shopify: From This-Looks-Fun to Production by Simon Eskildsen (Shop...
Docker, Inc.
 
DCEU 18: Dockerfile Best Practices
DCEU 18: Dockerfile Best PracticesDCEU 18: Dockerfile Best Practices
DCEU 18: Dockerfile Best Practices
Docker, Inc.
 
Docker, the Future of DevOps
Docker, the Future of DevOpsDocker, the Future of DevOps
Docker, the Future of DevOps
andersjanmyr
 
Deploying containers and managing them on multiple Docker hosts, Docker Meetu...
Deploying containers and managing them on multiple Docker hosts, Docker Meetu...Deploying containers and managing them on multiple Docker hosts, Docker Meetu...
Deploying containers and managing them on multiple Docker hosts, Docker Meetu...
dotCloud
 

What's hot (20)

Using Kubernetes for Continuous Integration and Continuous Delivery. Java2days
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2daysUsing Kubernetes for Continuous Integration and Continuous Delivery. Java2days
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2days
 
Docker for Java Developers
Docker for Java DevelopersDocker for Java Developers
Docker for Java Developers
 
Continuous Integration and Kamailio
Continuous Integration and KamailioContinuous Integration and Kamailio
Continuous Integration and Kamailio
 
Docker - From Walking To Running
Docker - From Walking To RunningDocker - From Walking To Running
Docker - From Walking To Running
 
douban happyday docker for daeqaci
douban happyday docker for daeqacidouban happyday docker for daeqaci
douban happyday docker for daeqaci
 
Rami Sayar - Node microservices with Docker
Rami Sayar - Node microservices with DockerRami Sayar - Node microservices with Docker
Rami Sayar - Node microservices with Docker
 
Container Orchestration @Docker Meetup Hamburg
Container Orchestration @Docker Meetup HamburgContainer Orchestration @Docker Meetup Hamburg
Container Orchestration @Docker Meetup Hamburg
 
Mesos swam-kubernetes-vds-02062017
Mesos swam-kubernetes-vds-02062017Mesos swam-kubernetes-vds-02062017
Mesos swam-kubernetes-vds-02062017
 
Docker 進階實務班
Docker 進階實務班Docker 進階實務班
Docker 進階實務班
 
Scaling Development Environments with Docker
Scaling Development Environments with DockerScaling Development Environments with Docker
Scaling Development Environments with Docker
 
Docker for (Java) Developers
Docker for (Java) DevelopersDocker for (Java) Developers
Docker for (Java) Developers
 
Docker Basics & Alfresco Content Services
Docker Basics & Alfresco Content ServicesDocker Basics & Alfresco Content Services
Docker Basics & Alfresco Content Services
 
Was liberty profile and docker
Was liberty profile and dockerWas liberty profile and docker
Was liberty profile and docker
 
Docker From Scratch
Docker From ScratchDocker From Scratch
Docker From Scratch
 
Using Kubernetes for Continuous Integration and Continuous Delivery
Using Kubernetes for Continuous Integration and Continuous DeliveryUsing Kubernetes for Continuous Integration and Continuous Delivery
Using Kubernetes for Continuous Integration and Continuous Delivery
 
Vagrant + Docker provider [+Puppet]
Vagrant + Docker provider [+Puppet]Vagrant + Docker provider [+Puppet]
Vagrant + Docker provider [+Puppet]
 
Docker at Shopify: From This-Looks-Fun to Production by Simon Eskildsen (Shop...
Docker at Shopify: From This-Looks-Fun to Production by Simon Eskildsen (Shop...Docker at Shopify: From This-Looks-Fun to Production by Simon Eskildsen (Shop...
Docker at Shopify: From This-Looks-Fun to Production by Simon Eskildsen (Shop...
 
DCEU 18: Dockerfile Best Practices
DCEU 18: Dockerfile Best PracticesDCEU 18: Dockerfile Best Practices
DCEU 18: Dockerfile Best Practices
 
Docker, the Future of DevOps
Docker, the Future of DevOpsDocker, the Future of DevOps
Docker, the Future of DevOps
 
Deploying containers and managing them on multiple Docker hosts, Docker Meetu...
Deploying containers and managing them on multiple Docker hosts, Docker Meetu...Deploying containers and managing them on multiple Docker hosts, Docker Meetu...
Deploying containers and managing them on multiple Docker hosts, Docker Meetu...
 

Viewers also liked

Package your Java EE Application using Docker and Kubernetes
Package your Java EE Application using Docker and KubernetesPackage your Java EE Application using Docker and Kubernetes
Package your Java EE Application using Docker and Kubernetes
Arun Gupta
 
Thanks Managers!
Thanks Managers!Thanks Managers!
Thanks Managers!
Arun Gupta
 
Scaling Docker with Kubernetes
Scaling Docker with KubernetesScaling Docker with Kubernetes
Scaling Docker with Kubernetes
Carlos Sanchez
 
Kubernetes Basics
Kubernetes BasicsKubernetes Basics
Kubernetes Basics
Eueung Mulyana
 
Kubernetes Architecture and Introduction – Paris Kubernetes Meetup
Kubernetes Architecture and Introduction – Paris Kubernetes MeetupKubernetes Architecture and Introduction – Paris Kubernetes Meetup
Kubernetes Architecture and Introduction – Paris Kubernetes Meetup
Stefan Schimanski
 
Introduction to Kubernetes
Introduction to KubernetesIntroduction to Kubernetes
Introduction to Kubernetes
rajdeep
 
Load Balancing Apps in Docker Swarm with NGINX
Load Balancing Apps in Docker Swarm with NGINXLoad Balancing Apps in Docker Swarm with NGINX
Load Balancing Apps in Docker Swarm with NGINX
NGINX, Inc.
 
Docker Swarm 0.2.0
Docker Swarm 0.2.0Docker Swarm 0.2.0
Docker Swarm 0.2.0
Docker, Inc.
 
Kubernetes University, Cap sur l’orchestration Docker
Kubernetes University, Cap sur l’orchestration DockerKubernetes University, Cap sur l’orchestration Docker
Kubernetes University, Cap sur l’orchestration Docker
Jean-Baptiste Claramonte
 
DevOps @Scale (Greek Tragedy in 3 Acts) as it was presented at Codemash 2017
 DevOps @Scale (Greek Tragedy in 3 Acts) as it was presented at Codemash 2017 DevOps @Scale (Greek Tragedy in 3 Acts) as it was presented at Codemash 2017
DevOps @Scale (Greek Tragedy in 3 Acts) as it was presented at Codemash 2017
Baruch Sadogursky
 
50 features of Java EE 7 in 50 minutes at Geecon 2014
50 features of Java EE 7 in 50 minutes at Geecon 201450 features of Java EE 7 in 50 minutes at Geecon 2014
50 features of Java EE 7 in 50 minutes at Geecon 2014
Arun Gupta
 
How to run your first marathon ? JavaOne 2014 Ignite
How to run your first marathon ? JavaOne 2014 IgniteHow to run your first marathon ? JavaOne 2014 Ignite
How to run your first marathon ? JavaOne 2014 Ignite
Arun Gupta
 
NoSQL - Vital Open Source Ingredient for Modern Success
NoSQL - Vital Open Source Ingredient for Modern SuccessNoSQL - Vital Open Source Ingredient for Modern Success
NoSQL - Vital Open Source Ingredient for Modern Success
Arun Gupta
 
Introduce Programming to Kids at Geecon 2014
Introduce Programming to Kids at Geecon 2014Introduce Programming to Kids at Geecon 2014
Introduce Programming to Kids at Geecon 2014
Arun Gupta
 
Teaching kids how to program
Teaching kids how to programTeaching kids how to program
Teaching kids how to program
Arun Gupta
 
Sich selbst verstehen – der ELK-Stack in der Praxis
Sich selbst verstehen – der ELK-Stack in der PraxisSich selbst verstehen – der ELK-Stack in der Praxis
Sich selbst verstehen – der ELK-Stack in der Praxis
Alexander Papaspyrou
 
50 features of Java EE 7 in 50 minutes at JavaZone 2014
50 features of Java EE 7 in 50 minutes at JavaZone 201450 features of Java EE 7 in 50 minutes at JavaZone 2014
50 features of Java EE 7 in 50 minutes at JavaZone 2014
Arun Gupta
 
Deploying Web Applications with WildFly 8
Deploying Web Applications with WildFly 8Deploying Web Applications with WildFly 8
Deploying Web Applications with WildFly 8
Arun Gupta
 
50 New Features of Java EE 7 in 50 minutes @ Devoxx France 2014
50 New Features of Java EE 7 in 50 minutes @ Devoxx France 201450 New Features of Java EE 7 in 50 minutes @ Devoxx France 2014
50 New Features of Java EE 7 in 50 minutes @ Devoxx France 2014
Arun Gupta
 
Docker Meetup - Melbourne 2015 - Kubernetes Deep Dive
Docker Meetup - Melbourne 2015 - Kubernetes Deep DiveDocker Meetup - Melbourne 2015 - Kubernetes Deep Dive
Docker Meetup - Melbourne 2015 - Kubernetes Deep Dive
Ken Thompson
 

Viewers also liked (20)

Package your Java EE Application using Docker and Kubernetes
Package your Java EE Application using Docker and KubernetesPackage your Java EE Application using Docker and Kubernetes
Package your Java EE Application using Docker and Kubernetes
 
Thanks Managers!
Thanks Managers!Thanks Managers!
Thanks Managers!
 
Scaling Docker with Kubernetes
Scaling Docker with KubernetesScaling Docker with Kubernetes
Scaling Docker with Kubernetes
 
Kubernetes Basics
Kubernetes BasicsKubernetes Basics
Kubernetes Basics
 
Kubernetes Architecture and Introduction – Paris Kubernetes Meetup
Kubernetes Architecture and Introduction – Paris Kubernetes MeetupKubernetes Architecture and Introduction – Paris Kubernetes Meetup
Kubernetes Architecture and Introduction – Paris Kubernetes Meetup
 
Introduction to Kubernetes
Introduction to KubernetesIntroduction to Kubernetes
Introduction to Kubernetes
 
Load Balancing Apps in Docker Swarm with NGINX
Load Balancing Apps in Docker Swarm with NGINXLoad Balancing Apps in Docker Swarm with NGINX
Load Balancing Apps in Docker Swarm with NGINX
 
Docker Swarm 0.2.0
Docker Swarm 0.2.0Docker Swarm 0.2.0
Docker Swarm 0.2.0
 
Kubernetes University, Cap sur l’orchestration Docker
Kubernetes University, Cap sur l’orchestration DockerKubernetes University, Cap sur l’orchestration Docker
Kubernetes University, Cap sur l’orchestration Docker
 
DevOps @Scale (Greek Tragedy in 3 Acts) as it was presented at Codemash 2017
 DevOps @Scale (Greek Tragedy in 3 Acts) as it was presented at Codemash 2017 DevOps @Scale (Greek Tragedy in 3 Acts) as it was presented at Codemash 2017
DevOps @Scale (Greek Tragedy in 3 Acts) as it was presented at Codemash 2017
 
50 features of Java EE 7 in 50 minutes at Geecon 2014
50 features of Java EE 7 in 50 minutes at Geecon 201450 features of Java EE 7 in 50 minutes at Geecon 2014
50 features of Java EE 7 in 50 minutes at Geecon 2014
 
How to run your first marathon ? JavaOne 2014 Ignite
How to run your first marathon ? JavaOne 2014 IgniteHow to run your first marathon ? JavaOne 2014 Ignite
How to run your first marathon ? JavaOne 2014 Ignite
 
NoSQL - Vital Open Source Ingredient for Modern Success
NoSQL - Vital Open Source Ingredient for Modern SuccessNoSQL - Vital Open Source Ingredient for Modern Success
NoSQL - Vital Open Source Ingredient for Modern Success
 
Introduce Programming to Kids at Geecon 2014
Introduce Programming to Kids at Geecon 2014Introduce Programming to Kids at Geecon 2014
Introduce Programming to Kids at Geecon 2014
 
Teaching kids how to program
Teaching kids how to programTeaching kids how to program
Teaching kids how to program
 
Sich selbst verstehen – der ELK-Stack in der Praxis
Sich selbst verstehen – der ELK-Stack in der PraxisSich selbst verstehen – der ELK-Stack in der Praxis
Sich selbst verstehen – der ELK-Stack in der Praxis
 
50 features of Java EE 7 in 50 minutes at JavaZone 2014
50 features of Java EE 7 in 50 minutes at JavaZone 201450 features of Java EE 7 in 50 minutes at JavaZone 2014
50 features of Java EE 7 in 50 minutes at JavaZone 2014
 
Deploying Web Applications with WildFly 8
Deploying Web Applications with WildFly 8Deploying Web Applications with WildFly 8
Deploying Web Applications with WildFly 8
 
50 New Features of Java EE 7 in 50 minutes @ Devoxx France 2014
50 New Features of Java EE 7 in 50 minutes @ Devoxx France 201450 New Features of Java EE 7 in 50 minutes @ Devoxx France 2014
50 New Features of Java EE 7 in 50 minutes @ Devoxx France 2014
 
Docker Meetup - Melbourne 2015 - Kubernetes Deep Dive
Docker Meetup - Melbourne 2015 - Kubernetes Deep DiveDocker Meetup - Melbourne 2015 - Kubernetes Deep Dive
Docker Meetup - Melbourne 2015 - Kubernetes Deep Dive
 

Similar to Docker, Kubernetes, and Mesos recipes for Java developers

Running Docker in Development & Production (DevSum 2015)
Running Docker in Development & Production (DevSum 2015)Running Docker in Development & Production (DevSum 2015)
Running Docker in Development & Production (DevSum 2015)
Ben Hall
 
Docker in Action
Docker in ActionDocker in Action
Docker in Action
Alper Kanat
 
DockerCon 2016 Seattle Recap
DockerCon 2016 Seattle RecapDockerCon 2016 Seattle Recap
DockerCon 2016 Seattle Recap
Philipp Garbe
 
[Hands-on 필수 준비 사항] 쇼핑몰 예제를 통한 Microservice 개발/배포 실습 - 황주필 부장 / 강인호 부장, 한국오라클
[Hands-on 필수 준비 사항] 쇼핑몰 예제를 통한 Microservice 개발/배포 실습 - 황주필 부장 / 강인호 부장, 한국오라클[Hands-on 필수 준비 사항] 쇼핑몰 예제를 통한 Microservice 개발/배포 실습 - 황주필 부장 / 강인호 부장, 한국오라클
[Hands-on 필수 준비 사항] 쇼핑몰 예제를 통한 Microservice 개발/배포 실습 - 황주필 부장 / 강인호 부장, 한국오라클
Oracle Korea
 
Docker for Web Developers: A Sneak Peek
Docker for Web Developers: A Sneak PeekDocker for Web Developers: A Sneak Peek
Docker for Web Developers: A Sneak Peek
msyukor
 
Running .NET on Docker
Running .NET on DockerRunning .NET on Docker
Running .NET on Docker
Ben Hall
 
Real World Experience of Running Docker in Development and Production
Real World Experience of Running Docker in Development and ProductionReal World Experience of Running Docker in Development and Production
Real World Experience of Running Docker in Development and Production
Ben Hall
 
Dockerizing a Symfony2 application
Dockerizing a Symfony2 applicationDockerizing a Symfony2 application
Dockerizing a Symfony2 application
Roman Rodomansky
 
Develop QNAP NAS App by Docker
Develop QNAP NAS App by DockerDevelop QNAP NAS App by Docker
Develop QNAP NAS App by Docker
Terry Chen
 
Docker module 1
Docker module 1Docker module 1
Docker module 1
Liang Bo
 
Agile Brown Bag - Vagrant & Docker: Introduction
Agile Brown Bag - Vagrant & Docker: IntroductionAgile Brown Bag - Vagrant & Docker: Introduction
Agile Brown Bag - Vagrant & Docker: Introduction
Agile Partner S.A.
 
Docker as an every day work tool
Docker as an every day work toolDocker as an every day work tool
Docker as an every day work tool
Przemyslaw Koltermann
 
Clustering with Docker Swarm - Dockerops 2016 @ Cento (FE) Italy
Clustering with Docker Swarm - Dockerops 2016 @ Cento (FE) ItalyClustering with Docker Swarm - Dockerops 2016 @ Cento (FE) Italy
Clustering with Docker Swarm - Dockerops 2016 @ Cento (FE) Italy
Giovanni Toraldo
 
Docker, Kubernetes, and Google Cloud
Docker, Kubernetes, and Google CloudDocker, Kubernetes, and Google Cloud
Docker, Kubernetes, and Google Cloud
Samuel Chow
 
Preparation study of_docker - (MOSG)
Preparation study of_docker  - (MOSG)Preparation study of_docker  - (MOSG)
Preparation study of_docker - (MOSG)
Soshi Nemoto
 
Docker: The basics - Including a demo with an awesome full-stack JS app
Docker: The basics - Including a demo with an awesome full-stack JS appDocker: The basics - Including a demo with an awesome full-stack JS app
Docker: The basics - Including a demo with an awesome full-stack JS app
Marcelo Rodrigues
 
JDO 2019: Tips and Tricks from Docker Captain - Łukasz Lach
JDO 2019: Tips and Tricks from Docker Captain - Łukasz LachJDO 2019: Tips and Tricks from Docker Captain - Łukasz Lach
JDO 2019: Tips and Tricks from Docker Captain - Łukasz Lach
PROIDEA
 
Streamline your development environment with docker
Streamline your development environment with dockerStreamline your development environment with docker
Streamline your development environment with docker
Giacomo Bagnoli
 
BBL Premiers pas avec Docker
BBL Premiers pas avec DockerBBL Premiers pas avec Docker
BBL Premiers pas avec Docker
kanedafromparis
 
Docker 101
Docker 101 Docker 101
Docker 101
Kevin Nord
 

Similar to Docker, Kubernetes, and Mesos recipes for Java developers (20)

Running Docker in Development & Production (DevSum 2015)
Running Docker in Development & Production (DevSum 2015)Running Docker in Development & Production (DevSum 2015)
Running Docker in Development & Production (DevSum 2015)
 
Docker in Action
Docker in ActionDocker in Action
Docker in Action
 
DockerCon 2016 Seattle Recap
DockerCon 2016 Seattle RecapDockerCon 2016 Seattle Recap
DockerCon 2016 Seattle Recap
 
[Hands-on 필수 준비 사항] 쇼핑몰 예제를 통한 Microservice 개발/배포 실습 - 황주필 부장 / 강인호 부장, 한국오라클
[Hands-on 필수 준비 사항] 쇼핑몰 예제를 통한 Microservice 개발/배포 실습 - 황주필 부장 / 강인호 부장, 한국오라클[Hands-on 필수 준비 사항] 쇼핑몰 예제를 통한 Microservice 개발/배포 실습 - 황주필 부장 / 강인호 부장, 한국오라클
[Hands-on 필수 준비 사항] 쇼핑몰 예제를 통한 Microservice 개발/배포 실습 - 황주필 부장 / 강인호 부장, 한국오라클
 
Docker for Web Developers: A Sneak Peek
Docker for Web Developers: A Sneak PeekDocker for Web Developers: A Sneak Peek
Docker for Web Developers: A Sneak Peek
 
Running .NET on Docker
Running .NET on DockerRunning .NET on Docker
Running .NET on Docker
 
Real World Experience of Running Docker in Development and Production
Real World Experience of Running Docker in Development and ProductionReal World Experience of Running Docker in Development and Production
Real World Experience of Running Docker in Development and Production
 
Dockerizing a Symfony2 application
Dockerizing a Symfony2 applicationDockerizing a Symfony2 application
Dockerizing a Symfony2 application
 
Develop QNAP NAS App by Docker
Develop QNAP NAS App by DockerDevelop QNAP NAS App by Docker
Develop QNAP NAS App by Docker
 
Docker module 1
Docker module 1Docker module 1
Docker module 1
 
Agile Brown Bag - Vagrant & Docker: Introduction
Agile Brown Bag - Vagrant & Docker: IntroductionAgile Brown Bag - Vagrant & Docker: Introduction
Agile Brown Bag - Vagrant & Docker: Introduction
 
Docker as an every day work tool
Docker as an every day work toolDocker as an every day work tool
Docker as an every day work tool
 
Clustering with Docker Swarm - Dockerops 2016 @ Cento (FE) Italy
Clustering with Docker Swarm - Dockerops 2016 @ Cento (FE) ItalyClustering with Docker Swarm - Dockerops 2016 @ Cento (FE) Italy
Clustering with Docker Swarm - Dockerops 2016 @ Cento (FE) Italy
 
Docker, Kubernetes, and Google Cloud
Docker, Kubernetes, and Google CloudDocker, Kubernetes, and Google Cloud
Docker, Kubernetes, and Google Cloud
 
Preparation study of_docker - (MOSG)
Preparation study of_docker  - (MOSG)Preparation study of_docker  - (MOSG)
Preparation study of_docker - (MOSG)
 
Docker: The basics - Including a demo with an awesome full-stack JS app
Docker: The basics - Including a demo with an awesome full-stack JS appDocker: The basics - Including a demo with an awesome full-stack JS app
Docker: The basics - Including a demo with an awesome full-stack JS app
 
JDO 2019: Tips and Tricks from Docker Captain - Łukasz Lach
JDO 2019: Tips and Tricks from Docker Captain - Łukasz LachJDO 2019: Tips and Tricks from Docker Captain - Łukasz Lach
JDO 2019: Tips and Tricks from Docker Captain - Łukasz Lach
 
Streamline your development environment with docker
Streamline your development environment with dockerStreamline your development environment with docker
Streamline your development environment with docker
 
BBL Premiers pas avec Docker
BBL Premiers pas avec DockerBBL Premiers pas avec Docker
BBL Premiers pas avec Docker
 
Docker 101
Docker 101 Docker 101
Docker 101
 

More from Arun Gupta

5 Skills To Force Multiply Technical Talents.pdf
5 Skills To Force Multiply Technical Talents.pdf5 Skills To Force Multiply Technical Talents.pdf
5 Skills To Force Multiply Technical Talents.pdf
Arun Gupta
 
Machine Learning using Kubernetes - AI Conclave 2019
Machine Learning using Kubernetes - AI Conclave 2019Machine Learning using Kubernetes - AI Conclave 2019
Machine Learning using Kubernetes - AI Conclave 2019
Arun Gupta
 
Machine Learning using Kubeflow and Kubernetes
Machine Learning using Kubeflow and KubernetesMachine Learning using Kubeflow and Kubernetes
Machine Learning using Kubeflow and Kubernetes
Arun Gupta
 
Secure and Fast microVM for Serverless Computing using Firecracker
Secure and Fast microVM for Serverless Computing using FirecrackerSecure and Fast microVM for Serverless Computing using Firecracker
Secure and Fast microVM for Serverless Computing using Firecracker
Arun Gupta
 
Building Java in the Open - j.Day at OSCON 2019
Building Java in the Open - j.Day at OSCON 2019Building Java in the Open - j.Day at OSCON 2019
Building Java in the Open - j.Day at OSCON 2019
Arun Gupta
 
Why Amazon Cares about Open Source
Why Amazon Cares about Open SourceWhy Amazon Cares about Open Source
Why Amazon Cares about Open Source
Arun Gupta
 
Machine learning using Kubernetes
Machine learning using KubernetesMachine learning using Kubernetes
Machine learning using Kubernetes
Arun Gupta
 
Building Cloud Native Applications
Building Cloud Native ApplicationsBuilding Cloud Native Applications
Building Cloud Native Applications
Arun Gupta
 
Chaos Engineering with Kubernetes
Chaos Engineering with KubernetesChaos Engineering with Kubernetes
Chaos Engineering with Kubernetes
Arun Gupta
 
How to be a mentor to bring more girls to STEAM
How to be a mentor to bring more girls to STEAMHow to be a mentor to bring more girls to STEAM
How to be a mentor to bring more girls to STEAM
Arun Gupta
 
The Serverless Tidal Wave - SwampUP 2018 Keynote
The Serverless Tidal Wave - SwampUP 2018 KeynoteThe Serverless Tidal Wave - SwampUP 2018 Keynote
The Serverless Tidal Wave - SwampUP 2018 Keynote
Arun Gupta
 
Introduction to Amazon EKS - KubeCon 2018
Introduction to Amazon EKS - KubeCon 2018Introduction to Amazon EKS - KubeCon 2018
Introduction to Amazon EKS - KubeCon 2018
Arun Gupta
 
Mastering Kubernetes on AWS - Tel Aviv Summit
Mastering Kubernetes on AWS - Tel Aviv SummitMastering Kubernetes on AWS - Tel Aviv Summit
Mastering Kubernetes on AWS - Tel Aviv Summit
Arun Gupta
 
Nuts and Bolts of WebSocket Devoxx 2014
Nuts and Bolts of WebSocket Devoxx 2014Nuts and Bolts of WebSocket Devoxx 2014
Nuts and Bolts of WebSocket Devoxx 2014
Arun Gupta
 
Lessons Learned from Real-World Deployments of Java EE 7 at JavaOne 2014
Lessons Learned from Real-World Deployments of Java EE 7 at JavaOne 2014Lessons Learned from Real-World Deployments of Java EE 7 at JavaOne 2014
Lessons Learned from Real-World Deployments of Java EE 7 at JavaOne 2014
Arun Gupta
 

More from Arun Gupta (15)

5 Skills To Force Multiply Technical Talents.pdf
5 Skills To Force Multiply Technical Talents.pdf5 Skills To Force Multiply Technical Talents.pdf
5 Skills To Force Multiply Technical Talents.pdf
 
Machine Learning using Kubernetes - AI Conclave 2019
Machine Learning using Kubernetes - AI Conclave 2019Machine Learning using Kubernetes - AI Conclave 2019
Machine Learning using Kubernetes - AI Conclave 2019
 
Machine Learning using Kubeflow and Kubernetes
Machine Learning using Kubeflow and KubernetesMachine Learning using Kubeflow and Kubernetes
Machine Learning using Kubeflow and Kubernetes
 
Secure and Fast microVM for Serverless Computing using Firecracker
Secure and Fast microVM for Serverless Computing using FirecrackerSecure and Fast microVM for Serverless Computing using Firecracker
Secure and Fast microVM for Serverless Computing using Firecracker
 
Building Java in the Open - j.Day at OSCON 2019
Building Java in the Open - j.Day at OSCON 2019Building Java in the Open - j.Day at OSCON 2019
Building Java in the Open - j.Day at OSCON 2019
 
Why Amazon Cares about Open Source
Why Amazon Cares about Open SourceWhy Amazon Cares about Open Source
Why Amazon Cares about Open Source
 
Machine learning using Kubernetes
Machine learning using KubernetesMachine learning using Kubernetes
Machine learning using Kubernetes
 
Building Cloud Native Applications
Building Cloud Native ApplicationsBuilding Cloud Native Applications
Building Cloud Native Applications
 
Chaos Engineering with Kubernetes
Chaos Engineering with KubernetesChaos Engineering with Kubernetes
Chaos Engineering with Kubernetes
 
How to be a mentor to bring more girls to STEAM
How to be a mentor to bring more girls to STEAMHow to be a mentor to bring more girls to STEAM
How to be a mentor to bring more girls to STEAM
 
The Serverless Tidal Wave - SwampUP 2018 Keynote
The Serverless Tidal Wave - SwampUP 2018 KeynoteThe Serverless Tidal Wave - SwampUP 2018 Keynote
The Serverless Tidal Wave - SwampUP 2018 Keynote
 
Introduction to Amazon EKS - KubeCon 2018
Introduction to Amazon EKS - KubeCon 2018Introduction to Amazon EKS - KubeCon 2018
Introduction to Amazon EKS - KubeCon 2018
 
Mastering Kubernetes on AWS - Tel Aviv Summit
Mastering Kubernetes on AWS - Tel Aviv SummitMastering Kubernetes on AWS - Tel Aviv Summit
Mastering Kubernetes on AWS - Tel Aviv Summit
 
Nuts and Bolts of WebSocket Devoxx 2014
Nuts and Bolts of WebSocket Devoxx 2014Nuts and Bolts of WebSocket Devoxx 2014
Nuts and Bolts of WebSocket Devoxx 2014
 
Lessons Learned from Real-World Deployments of Java EE 7 at JavaOne 2014
Lessons Learned from Real-World Deployments of Java EE 7 at JavaOne 2014Lessons Learned from Real-World Deployments of Java EE 7 at JavaOne 2014
Lessons Learned from Real-World Deployments of Java EE 7 at JavaOne 2014
 

Recently uploaded

FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 
Enhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZEnhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZ
Globus
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
Jen Stirrup
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
nkrafacyberclub
 

Recently uploaded (20)

FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 
Enhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZEnhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZ
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
 
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
 

Docker, Kubernetes, and Mesos recipes for Java developers

  • 1. Docker,  Kubernetes  and  Mesos  for   Java  Developers Arun Gupta, @arungupta Docker Captain, Java Champion
  • 3. ©2016  Couchbase  Inc. What  is  Docker? ▪Open source project and company
 
 
 
 
 ▪Used to create containers for software applications ▪Package Once Deploy Anywhere (PODA) 3
  • 4. ©2016  Couchbase  Inc. 4 Mac OS X Ubuntu CentOSWindows {J,W,E}AR Mac OS X Ubuntu CentOSWindows Image WORA = Write Once Run Anywhere PODA = Package Once Deploy Anywhere
  • 5. ©2016  Couchbase  Inc. Docker  Mission 5 Build Ship Run Anywhere Distributed/Applications
  • 7. ©2016  Couchbase  Inc. 7 FROM ubuntu
 
 CMD echo “Hello world” FROM java 
 COPY target/hello.jar /usr/src/hello.jar
 
 CMD java -cp /usr/src/hello.jar org.example.App
  • 8. ©2016  Couchbase  Inc. 8 http://docs.docker.com/engine/reference/builder/
  • 10. ©2016  Couchbase  Inc. Union  File  System 10 Bootfs/Kernel Image java:8 Image buildpack-deps:jessie-scm Image buildpack-deps:jessie-curl Base Image debian:jessie
  • 11. ©2016  Couchbase  Inc. Image  Layers  -­‐  Couchbase ~ > docker images couchbase REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE couchbase latest 45abdd57689a 3 weeks ago 372 MB ~ > docker history couchbase IMAGE CREATED CREATED BY SIZE COMMENT 45abdd57689a 3 weeks ago /bin/sh -c #(nop) VOLUME [/opt/couchbase/var] 0 B dd8c5611343d 3 weeks ago /bin/sh -c #(nop) EXPOSE 11207/tcp 11210/tcp 0 B 30852bbad62b 3 weeks ago /bin/sh -c #(nop) CMD ["couchbase-server"] 0 B 5537747ea12f 3 weeks ago /bin/sh -c #(nop) ENTRYPOINT &{["/entrypoint. 0 B e8a83a5448df 3 weeks ago /bin/sh -c #(nop) COPY file:cbb44c9c65b64a9dc 182 B 18165b90fefa 3 weeks ago /bin/sh -c #(nop) COPY file:34e32c52f0895191f 389 B 5f37b8bdc5a6 3 weeks ago /bin/sh -c wget -N $CB_RELEASE_URL/$CB_VERSIO 212.1 MB 1a8da511d01b 3 weeks ago /bin/sh -c groupadd -g 1000 couchbase && user 328.7 kB d9b2222c39b4 3 weeks ago /bin/sh -c #(nop) ENV CB_VERSION=4.0.0 CB_REL 0 B 815f08b3c781 3 weeks ago /bin/sh -c apt-get update && apt-get inst 23.57 MB fc38f156c0ea 3 weeks ago /bin/sh -c #(nop) MAINTAINER Couchbase Docker 0 B 2a7a952931ec 3 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B 10f1b5844a9c 3 weeks ago /bin/sh -c sed -i 's/^#s*(deb.*universe)$/ 1.911 kB 23c388b926b6 3 weeks ago /bin/sh -c echo '#!/bin/sh' > /usr/sbin/polic 156.2 kB b45376f323f5 3 weeks ago /bin/sh -c #(nop) ADD file:4a9e089e81d6581a54 135.9 MB 11
  • 12. ©2016  Couchbase  Inc. Image  Layers  -­‐  Java ~ > docker images java REPOSITORY TAG IMAGE ID CREATED SIZE java openjdk-8-jdk-alpine 78afabc37d4f 6 days ago 145.5 MB java 8 f298aed75633 6 days ago 642.9 MB java latest f298aed75633 6 days ago 642.9 MB
 ~ > docker history java IMAGE CREATED CREATED BY SIZE COMMENT f298aed75633 6 days ago /bin/sh -c /var/lib/dpkg/info/ca-certificates 418.2 kB <missing> 6 days ago /bin/sh -c set -x && apt-get update && apt- 349.2 MB <missing> 6 days ago /bin/sh -c #(nop) ENV CA_CERTIFICATES_JAVA_VE 0 B <missing> 6 days ago /bin/sh -c #(nop) ENV JAVA_DEBIAN_VERSION=8u7 0 B <missing> 6 days ago /bin/sh -c #(nop) ENV JAVA_VERSION=8u72 0 B <missing> 6 days ago /bin/sh -c #(nop) ENV JAVA_HOME=/usr/lib/jvm/ 0 B <missing> 6 days ago /bin/sh -c { echo '#!/bin/sh'; echo 'set 87 B <missing> 6 days ago /bin/sh -c #(nop) ENV LANG=C.UTF-8 0 B <missing> 6 days ago /bin/sh -c echo 'deb http://httpredir.debian. 61 B <missing> 6 days ago /bin/sh -c apt-get update && apt-get install 1.289 MB <missing> 2 weeks ago /bin/sh -c apt-get update && apt-get install 122.6 MB <missing> 2 weeks ago /bin/sh -c apt-get update && apt-get install 44.32 MB <missing> 2 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B <missing> 2 weeks ago /bin/sh -c #(nop) ADD file:b5391cb13172fb513d 125.1 MB 12
  • 13. ©2016  Couchbase  Inc. Docker  Machine ▪Create Docker Host on computer or cloud provider
 
 docker-machine create --driver=virtualbox myhost – Configure Docker client to talk to host – Create and pull images – Start, stop, restart containers – Upgrade Docker 13
  • 14. ©2016  Couchbase  Inc. Docker  Machine  Providers 14
  • 15. ©2016  Couchbase  Inc. Docker  for  Mac/Windows ▪Native user interface and auto-update capability ▪No VirtualBox! – OSX: xhyve VM using Hypervisor.framework – Windows: Hyper-V VM ▪Better networking and filesystem mounting/notification 15
  • 16. ©2016  Couchbase  Inc. Docker  Toolbox ▪Docker Client ▪Docker Machine ▪Docker Compose ▪Docker Kitematic ▪Boot2Docker ISO ▪Virtualbox 16 https://www.docker.com/toolbox
  • 17. ©2016  Couchbase  Inc. Docker  Compose  -­‐  One  Service 17 version: “2” services: db: image: couchbase volumes: - ~/couchbase:/opt/couchbase/var ports: - 8091:8091 - 8092:8092 - 8093:8093 - 11210:11210
  • 18. ©2016  Couchbase  Inc. Docker  Compose  -­‐  Two  Services 18 GET POST PUT DELETE CRUD using N1QL
  • 19. ©2016  Couchbase  Inc. Docker  Compose ▪Defining and running multi-container applications ▪Configuration defined in one or more files – docker-compose.yml (default) – docker-compose.override.yml (default) – Multiple files specified using -f – All paths relative to base configuration file ▪Great for dev, staging, and CI 19
  • 20. ©2016  Couchbase  Inc. version: “2” services: db: container_name: "db" image: couchbase ports: - 8091:8091 - 8092:8092 - 8093:8093 - 11210:11210 web: image: arungupta/wildfly environment: - COUCHBASE_URI=db ports: - 8080:8080 - 9990:9990 Docker  Compose  -­‐  Two  Services 20
  • 21. ©2016  Couchbase  Inc. Overriding  Services  in  Docker  Compose 21 mywildfly: image: jboss/wildfly ports: - 8080:8080 docker-compose.yml mywildfly: ports: - 9080:8080 docker-compose.override.yml docker-compose up -d
  • 22. ©2016  Couchbase  Inc. Dev/Prod  with  Compose 22 mycouchbase: container_name: "db-dev" image: arungupta/couchbase ports: - . . . mywildfly: image: arungupta/wildfly environment: - COUCHBASE_URI=db-dev:8093 ports: - 8080:8080 mywildfly: environment: - COUCHBASE_URI=db-prod:8093 ports: - 8080:80 mycouchbase:
 container_name: "db-prod" docker-compose.yml production.yml docker-compose up 
 -f docker-compose.yml 
 -f production.yml -d docker-compose up -d
  • 24. ©2016  Couchbase  Inc. Default  Networks 24 Network Name Purpose bridge Default network that containers connect to none Container-specific networking stack host Adds container on hosts networking stack docker network ls NETWORK ID NAME DRIVER 8cf651cafbef bridge bridge 14e63204639e none null 96901337c96f host host
  • 25. ©2016  Couchbase  Inc. Multi-­‐host  Networking ▪Create virtual networks and attach containers ▪Bridge network span single host ▪Overlay network spans multiple hosts – Uses libnetwork (built-in VXLAN-based overlay network driver) and Docker’s libkv ▪Works with Swarm and Compose ▪Pluggable: Calico, Cisco, Weave, . . . 25
  • 26. ©2016  Couchbase  Inc. docker network 26 docker network --help Usage: docker network [OPTIONS] COMMAND [OPTIONS] Commands: disconnect Disconnect container from a network inspect Display detailed network information ls List all networks rm Remove a network create Create a network connect Connect container to a network
  • 27. ©2016  Couchbase  Inc. Application  Code 27 CouchbaseCluster.create(System.getenv(“COUCHBASE_URI”)); version: “2” services: db: container_name: "db" image: couchbase ports: - 8091:8091 - 8092:8092 - 8093:8093 - 11210:11210 web: image: arungupta/wildfly-admin environment: - COUCHBASE_URI=db ports: - 8080:8080 - 9990:9990
  • 28. ©2016  Couchbase  Inc. Docker  Swarm ▪Native clustering for Docker ▪Provides a unified interface to a pool of Docker hosts ▪Fully integrated with Machine and Compose ▪Serves the standard Docker API ▪1.1 - Ready for production – Reschedule containers when a node fails (experimental) – Better node management 28 Stress tested on 1000 EC2 nodes, ~30k containers
  • 30. ©2016  Couchbase  Inc. Scheduling  Backends ▪ Based on CPU (-c), RAM (-m), number of containers ▪ docker machine create —strategy <value> – spread (default): node with least number of running containers – binpack: node with most number of running containers – random: mostly for debugging ▪ API for pluggable backends (e.g. Mesos) coming 30
  • 31. ©2016  Couchbase  Inc. Machine  +  Swarm  +  Compose 31
  • 32. ©2016  Couchbase  Inc. Persistent  Storage ▪Data volumes - used to persist data independent of container’s lifecycle ▪Multiple plugins: Flocker, Ceph, . . . 32 docker volume --help Usage: docker volume [OPTIONS] [COMMAND] Manage Docker volumes Commands: create Create a volume inspect Return low-level information on a volume ls List volumes rm Remove a volume
  • 33. ©2016  Couchbase  Inc. Persistent  Storage 33 docker volume create —name=data data docker run -it -v data:/opt/couchbase/var couchbase Create a volume Run a container with the volume
  • 39. ©2016  Couchbase  Inc. 39 mycouchbase: container_name: "db" image: arungupta/couchbase ports: - 8091:8091 - 8092:8092 - 8093:8093 - 11210:11210 mywildfly: image: arungupta/wildfly-admin environment: - COUCHBASE_URI=db ports: - 8080:8080 - 9990:9990 Master Node 01 Node 02 Discovery
 Service http://blog.arungupta.me/docker-machine-swarm-compose-couchbase-wildfly/
  • 40. ©2016  Couchbase  Inc. Docker  Machine  +  Compose  +  Swarm 40 Swarm Master Swarm Node 01 Swarm Node 02 Consul Machine version: "2" services: db: image: arungupta/couchbase network_mode: "host" ports: - 8091:8091 - 8092:8092 - 8093:8093 - 11210:11210 scale db=2 docker-compose
  • 41. ©2016  Couchbase  Inc. Docker  Machine  +  Compose  +  Swarm 41 Swarm Master A Swarm Node A1 Swarm Node A2 Consul Machine Swarm Master B Swarm Node B1 Swarm Node B2 version: "2" services: db: image: arungupta/ couchbase network_mode: "host" ports: - 8091:8091 - 8092:8092 - 8093:8093 - 11210:11210 XDCR
  • 42. ©2016  Couchbase  Inc. Docker  Mission 42 BUILD Developer(Workflows SHIP Registry(Services RUN Management Ecosystem3Partners Docker3Engine Docker3Toolbox Docker3Trusted3Registry3 Docker3Universal3Control3Plane Docker3Hub Tutum by3Docker Infrastructure Compute,(Volumes,(Networking Clustering3&3Scheduling3 (Orchestration) Service3Discovery Plugins
  • 43. Getting  Started  with  Kubernetes Arun Gupta, @arungupta VP Developer Advocacy, Couchbase
  • 44. ©2016  Couchbase  Inc. 44 dzone.com/refcardz/kubernetes-essentials
  • 45. ©2016  Couchbase  Inc. Kubernetes ▪Open source orchestration system for Docker containers ▪Provide declarative primitives for the “desired state” – Self-healing – Auto-restarting – Schedule across hosts – Replicating 45
  • 46. ©2016  Couchbase  Inc. Concepts ▪Pods: collocated group of Docker containers that share an IP and storage volume ▪Service: Single, stable name for a set of pods, also acts as LB ▪Label: used to organize and select group of objects ▪Replication Controller: manages the lifecycle of pods and ensures specified number are running 46 Node Pod 1 Pod 2 C1 C2 C3 Pod 1 Couchbase Pod 2 Couchbase Service “db” port 8091 port 8091 Docker
  • 47. ©2016  Couchbase  Inc. Components ▪Node: Docker host running kubelet (node agent) and proxy services – Monitored by systemd (CentOS) or monit (Debian) ▪Master: hosts cluster-level control services, including the API server, scheduler, and controller manager ▪etcd: distributed key-value store used to persist Kubernetes system state 47 Node kubelet proxy Docker Pod 1 Pod 2 C1 C2 C3 Node kubelet proxy Docker Pod 1 Pod 2 C1 C2 C3 Node kubelet proxy Node Pod 1 Pod 2 C1 C2 C3 Master API Server Scheduler Controller Manager
  • 48. ©2016  Couchbase  Inc. Worker Docker Worker Worker Pod Containers Architecture Kubelet Docker Kubelet Docker Kubelet Master Master Master Kubelet
  • 50. ©2016  Couchbase  Inc. Master  High  Availability ▪Hack by running a podmaster utility ▪Proposal – Hot Standby – Warm Standby – Active-Active (Load Balanced) 50 http://kubernetes.io/v1.1/docs/proposals/high-availability.html
  • 51. ©2016  Couchbase  Inc. kubectl ▪Controls the Kubernetes cluster manager ▪kubectl get pods or minions ▪kubectl create -f <filename> ▪kubectl update or delete ▪kubectl resize —replicas=3 replicationcontrollers <name> 51
  • 53. ©2016  Couchbase  Inc. 53 export KUBERNETES_PROVIDER=vagrant ./cluster/kube-up.sh Mac OS X Kubernetes (Vagrant) Master Node
  • 54. ©2016  Couchbase  Inc. 54 https://get.k8s.io/
  • 55. ©2016  Couchbase  Inc. A  Pod  with  One  Container 55 Mac OS X Kubernetes (Vagrant) Master Node Pod Docker
 (WildFly)
  • 56. ©2016  Couchbase  Inc. Services ▪Abstract a set of pods as a single IP and port – Simple TCP/UDP load balancing ▪Creates environment variables in other pods ▪Stable endpoint for pods to reference – Allows list of pods to change dynamically 56
  • 59. ©2016  Couchbase  Inc. Amazon Web Services “worker”“master” Services  -­‐  AWS 59 “worker” Kubernetes Cluster Pod Couchbase Docker Container Replication
 Controller Publicly accessible Service
  • 60. ©2016  Couchbase  Inc. Google Cloud “worker”“master” Services  -­‐  GCE 60 “worker” Kubernetes Cluster Pod Couchbase Docker Container Replication
 Controller Publicly accessible Service
  • 61. ©2016  Couchbase  Inc. Microsoft Azure “worker”“master” Services  -­‐  Azure 61 “worker” Kubernetes Cluster Pod Couchbase Docker Container Deployment Publicly accessible Service “worker”
  • 63. ©2016  Couchbase  Inc. Node 2 Service  across  Two  Nodes 63 Node 1 Pod Docker
 (WildFly) Pod Docker
 (Couchbase) Couchbase Service
  • 64. ©2016  Couchbase  Inc. Replication  Controller ▪Ensures that a specified number of pod "replicas" are running – Pod templates are cookie cutters – Rescheduling – Manual or auto-scale replicas – Rolling updates ▪Recommended to wrap a Pod or Service in a RC ▪Only appropriate for Pods with Restart=Always policy (default) 64
  • 65. ©2016  Couchbase  Inc. Replication  Controller  Configuration 65
  • 66. ©2016  Couchbase  Inc. Replication  Controller 66 Master Node 1 Pod 1 Couchbase Node 2 Node 3 Replication
 Controller Pod 2 Couchbase
  • 67. ©2016  Couchbase  Inc. Replication  Controller:  Automatic  Rescheduling 67 Node 1 Node 2 Node 3 Pod 1 Couchbase Pod 2 Couchbase Node 1 Node 2 Node 3 Pod 1 Couchbase Pod 2 Couchbase✘ Node 1 Node 2 Node 3 Pod 1 Couchbase Pod 3 Couchbase Node 1 Node 2 Node 3 Pod 3 Couchbase Pod 1 Couchbase OR
  • 68. ©2016  Couchbase  Inc. Replication  Controller:  Scaling 68 kubectl.sh
 scale
 --replicas=3
 rc
 couchbase-rc Node 1 Node 2 Node 3 Pod 1 Couchbase Pod 2 Couchbase Node 1 Node 2 Node 3 Pod 1 Couchbase Pod 3 Couchbase Pod 2 Couchbase Node 1 Node 2 Node 3 OR Pod 3 Couchbase Pod 3 Couchbase Pod 1 Couchbase
  • 69. ©2016  Couchbase  Inc. Sample  Production  Deployment ▪www.wombatsoftware.de ▪shopadvisors.de: E-commerce optimization and monitoring tools for increase of sales 69
  • 70. ©2016  Couchbase  Inc. Sample  Production  Deployment 70 32 Core 160 GB RAM Load Containers Normal 400 Peak 600
  • 71. ©2016  Couchbase  Inc. Health  Checks ▪Restarts Pod, if wrapped in RC ▪Application-level health checks – HTTP – Container Exec – TCP Socket ▪Health checks performed by Kubelet 71
  • 72. ©2016  Couchbase  Inc. Kubernetes  using  Docker 72 https://github.com/arun-gupta/docker-images/blob/master/kubernetes/docker-compose.yml
  • 73. ©2016  Couchbase  Inc. Kubernetes  using  Docker 73 Mac OS X Docker Machine Kubernetes (Docker Compose) etcd Master Proxy Pod Application Container Recommended starting point http://kubernetes.io/v1.0/docs/getting-started-guides/docker.html
  • 74. ©2016  Couchbase  Inc. OpenShift  3 74 Mac OS X Vagrant Box (OpenShift 3) Kubernetes Docker Registry Master OpenShift Registry Proxy Pod Router
  • 76. Getting  Started  with  Mesos Arun Gupta, @arungupta VP Developer Advocacy, Couchbase
  • 77. ©2016  Couchbase  Inc. Mesos ▪Open source cluster manager ▪Developed at UC Berkeley ▪Provides resource isolation and sharing across distributed applications ▪Run distributed systems on the same pool of nodes – Hadoop, Spark, Jenkins, Couchbase, … ▪Cluster monitoring ▪Tasks isolated via Linux containers 77
  • 78. ©2016  Couchbase  Inc. Mesos ▪Master Slave architecture ▪Fault tolerant – Leader election via ZooKeeper ▪Multi platform – Ubuntu, Mac OS, CentOS 78
  • 79. ©2016  Couchbase  Inc. Mesos  Architecture 79 http://mesos.apache.org/documentation/latest/architecture/
  • 80. ©2016  Couchbase  Inc. 80 Master Master (standby) Master (standby) ZooKeeper Quorum Slave Slave Slave Slave http://mesos.apache.org/documentation/latest/architecture/ Marathon Kubernetes Spark Aurora Marathon Executor Task Frameworks
  • 81. ©2016  Couchbase  Inc. Frameworks ▪Frameworks are targeted at a use case and domain-specific – Master node “offers” resources to each framework – Framework “accepts” the offer and execute applications ▪Framework has “scheduler” and “executor” – Scheduler registers with the master for “offer” – Executor launched on slave nodes to run the task – Passes a description of the task to run 81
  • 82. ©2016  Couchbase  Inc. 82 Master Slave Slave Slave Slave <s1, 4GB, 4CPU, …> Job 1 Job 2 <s1, 2GB, 2CPU, …>
 <s4, 4GB, 4CPU, …> Allocation Module Scheduler Job 1 Job 2 Scheduler <t1, s1, 2GB, 2CPU, …> <t2, s4, 2GB, 4CPU, …> <s4, 4GB, 4CPU, …> <m, t1, s1, 2GB, 2CPU, …> <m, t2, s4, 2GB, 4CPU, …> 1 1 2 3 4 4 5 http://mesos.apache.org/documentation/latest/architecture/