container landscape in 2017
TRANSCRIPT
![Page 1: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/1.jpg)
Whatthecontainers?
Arun Gupta, @arungupta
![Page 2: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/2.jpg)
©2016CouchbaseInc.
Docker Captain Java Champion
JavaOne Rock Star (4 years) NetBeans Dream Team
Silicon Valley JUG Leader Author Runner
Lifelong learner
2
![Page 3: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/3.jpg)
©2016CouchbaseInc.
![Page 4: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/4.jpg)
©2016CouchbaseInc.
![Page 5: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/5.jpg)
©2016CouchbaseInc.
![Page 6: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/6.jpg)
©2016CouchbaseInc. 6
Malcom McLean Father of Containerization
![Page 7: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/7.jpg)
©2016CouchbaseInc.
Intermodalism
7
“pertaining to or suitable for transportation involving more than one form of carrier”
![Page 8: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/8.jpg)
©2016CouchbaseInc.
![Page 9: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/9.jpg)
©2016CouchbaseInc.
AdvantagesofContainerization
▪Standard transport product ▪Flexibility of usage ▪Economies of scale ▪Speed ▪Security ▪Lower labor costs ▪Efficient stacking ▪Boom in international trade
9
![Page 10: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/10.jpg)
©2016CouchbaseInc.
BareMetal
10
Physical Server
Operating System
Application
![Page 11: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/11.jpg)
©2016CouchbaseInc.
VirtualMachines
11
Physical Server
Host Operating System
Hypervisor
Virtual Machine
Guest OS
Application
Virtual Machine
Guest OS
Application
Virtual Machine
Guest OS
Application
![Page 12: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/12.jpg)
©2016CouchbaseInc.
Containers
12
Physical Server
Host Operating System
Container
Application
Container
Application
Container
Application
Container Runtime
![Page 13: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/13.jpg)
©2016CouchbaseInc.
AdvantagesofContainerization
▪Standard transport product ▪Flexibility of usage ▪Economies of scale ▪Speed ▪Security ▪Lower labor costs ▪Efficient stacking ▪Boom in international trade
13
▪Standard packaging ▪Application agnostic ▪High density ▪Faster deployment ▪Security sandbox ▪Easy portability ▪Orchestration frameworks ▪Tipping point
![Page 14: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/14.jpg)
©2016CouchbaseInc.
• Cloud-native
• Microservices
• DevOps
• Docker
![Page 15: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/15.jpg)
©2016CouchbaseInc. 15
Create and drive adoption of computing paradigm optimized for
distributed systems capable of scaling to tens of thousands of self-
healing multi-tenant nodes
![Page 16: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/16.jpg)
©2016CouchbaseInc.
▪Uses an open source software stack to – deploy applications as microservices – package each part into its own container – dynamically orchestrate containers for optimum
resource utilization
16
![Page 17: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/17.jpg)
©2016CouchbaseInc.
![Page 18: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/18.jpg)
©2016CouchbaseInc. 18
promote a set of common, minimal, open standards and specifications
around container technology
![Page 19: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/19.jpg)
©2016CouchbaseInc.
OCIProjects
19
1.0.0.RC4
1.0.0.RC5
![Page 20: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/20.jpg)
©2016CouchbaseInc.
OCIImageSpec▪Image format
– Docker - docker save and load ▪Registry
– rkt - supports pull only – AWS ECR - push and pull OCI images
▪Tools to generate OCI image – acbuild: github.com/containers/build – umoci: github.com/openSUSE/umoci
20
![Page 21: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/21.jpg)
©2016CouchbaseInc.
OCIRuntimes
21
https://github.com/opencontainers/runtime-spec/blob/master/implementations.md
![Page 22: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/22.jpg)
©2016CouchbaseInc.
runC▪Reference Implementation of the OCI runtime specification
– Donated by Docker – Based on original libcontainer project
– Interfaces with cgroups and namespaces – Manage the lifecycle of container – Lockstep with OCI specifications major version
22
RC2
![Page 23: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/23.jpg)
©2016CouchbaseInc.
containerd▪Daemon that uses runC to manage containers ▪Exposes its functionality over gRPC ▪Docker Engine uses API to run containers
– Adds volumes, networks, images etc – Exposes a full-blown REST API
230.2.5
![Page 24: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/24.jpg)
©2016CouchbaseInc.
Docker Engine
containerd
containerd-shim containerd-shim containerd-shim
runC runC runC. . .
. . .
TODAY
![Page 25: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/25.jpg)
©2016CouchbaseInc.
ContainerdandDocker
25
![Page 26: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/26.jpg)
©2016CouchbaseInc.
TODAY
![Page 27: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/27.jpg)
©2016CouchbaseInc.
FUTURE
![Page 28: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/28.jpg)
©2016CouchbaseInc.
ContainerdandOrchestrationFrameworks
28
FUTURE
![Page 29: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/29.jpg)
©2016CouchbaseInc. 29
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
![Page 30: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/30.jpg)
©2016CouchbaseInc.
ContainerWorkflow
30
![Page 31: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/31.jpg)
©2016CouchbaseInc.
OrchestrationFrameworks▪Local development ▪Core concepts ▪Declarative state ▪Schedule containers ▪Service discovery ▪Load balancing ▪System monitoring
▪Persistent Volumes ▪Multi-host networking ▪Multiple master ▪Rolling Update ▪Rules and constraints ▪Cloud/commercial support
31
![Page 32: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/32.jpg)
©2016CouchbaseInc.
OrchestrationFrameworks
32
![Page 33: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/33.jpg)
©2016CouchbaseInc.
LocalDevelopment
33
• Docker Community Edition • Docker for Mac/Windows/Linux • Monthly edge and quarterly stable • Native desktop or cloud provider experience
• Single-node cluster • Minikube
• Multi-node cluster • kops (AWS) • kube-aws (CoreOS + AWS) • kube-up (deprecated) • GCE, Azure, Tectonic, …
• Vagrant image • Cloud
• AWS CloudFormation templates • Azure Resource Manager templates • Digital Ocean using Terraform • GCE (using scripts)
• Amazon Web Services
![Page 34: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/34.jpg)
©2016CouchbaseInc.
CoreConcepts
34
• Ops • Managers • Workers
• Developer • Replicated and Global Service • Tasks • Scaling • Run-once • Compose
• Ops • Master • Worker
• Developer • Pods (Horizontal Pod Autoscaling) • Services • Deployment • Replica Set • Daemon Set • Job
• Ops • Master & Slaves (Mesos, public/private) • Frameworks (Marathon)
• Developer • Application
• Task • Pod (multiple tasks that share)
• Job
• Ops • Container Instance • Cluster
• Developer • Service
• AutoScaling - integrated with CloudWatch • Task
![Page 35: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/35.jpg)
©2016CouchbaseInc.
Create Docker Image
ContainersandJavaDevelopers
35
Build Archive
Push to Registry
DeployApplication
![Page 36: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/36.jpg)
©2016CouchbaseInc.
DockerImagewithMaven
36
<plugin> <groupId>io.fabric8</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.19.0</version> <configuration> <images> <image> <name>hellojava</name> <build> <from>openjdk:latest</from> <assembly> <descriptorRef>artifact</descriptorRef> </assembly> <cmd>java -jar maven/${project.name}-${project.version}.jar</cmd> </build> <run> <wait> <log>Hello World!</log> </wait> </run> </image> </images> </configuration>
<executions> <execution> <id>docker:build</id> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> <execution> <id>docker:start</id> <phase>install</phase> <goals> <goal>run</goal> <goal>logs</goal> </goals> </execution> </executions> </plugin>
![Page 37: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/37.jpg)
©2016CouchbaseInc.
ApplicationDefinition
37
version: “3” services: db: image: arungupta/couchbase:travel ports: - 8091:8091 - 8092:8092 - 8093:8093 - 11210:11210 web: image: arungupta/wildfly-couchbase-javaee:travel environment: - COUCHBASE_URI=db ports: - 8080:8080 - 9990:9990
![Page 38: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/38.jpg)
©2016CouchbaseInc.
ApplicationDefinition
38
apiVersion: v1 kind: Service metadata: name: couchbase-service spec: selector: app: couchbase-rc-pod ports: - name: admin port: 8091 - name: views port: 8092 - name: query port: 8093 - name: memcached port: 11210 --- apiVersion: v1 kind: ReplicationController metadata: name: couchbase-rc spec: replicas: 1 template: metadata: labels: app: couchbase-rc-pod spec: containers: - name: couchbase
image: arungupta/couchbase:travel ports: - containerPort: 8091 - containerPort: 8092 - containerPort: 8093 - containerPort: 11210——- apiVersion: batch/v1 kind: Job metadata: name: web labels: name: web-pod spec: template: metadata: name: web-pod spec: containers: - name: web-pod image: arungupta/wildfly—couchbase-javaee:travel env: - name: COUCHBASE_URI value: couchbase-service restartPolicy: Never
![Page 39: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/39.jpg)
©2016CouchbaseInc.
ApplicationDefinition
39
{ "id":"/webapp", "apps":[ { "id":"database", "cpus":4, "mem":4096, "instances":1, "container":{ "type":"DOCKER", "docker":{ "image":"arungupta/couchbase:travel", "network":"USER" } }, "ipAddress":{ "networkName":"dcos" } }, { "id":"web", "dependencies":[ "/webapp/database" ], "cpus":2, "mem":4096, "instances":1, "container":{ "type":"DOCKER",
"docker":{ "image":"arungupta/wildfly-couchbase-javaee:travel", "network":"USER", "portMappings":[ { "hostPort":0, "containerPort":8080, "protocol":"tcp" } ] } }, "ipAddress":{ "networkName":"dcos" }, "env":{ "COUCHBASE_URI":"database-webapp.marathon.containerip.dcos.thisdcos.directory" }, "labels":{ "HAPROXY_0_VHOST":"DCOS-PublicSlaveLo-LZ6PIP10I08O-1004309391.us-west-1.elb.amazonaws.com", "HAPROXY_GROUP":"external" } } ] }
![Page 40: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/40.jpg)
©2016CouchbaseInc.
![Page 41: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/41.jpg)
©2016CouchbaseInc.
Production
41
• Docker Enterprise Edition • Certified infrastructure • Certified containers from 3rd-party ISVs • Certified plugins from networking and storage
vendors • End-to-end security
• AWS, Azure, GCP • Bare metal • Linux*, Windows Server 2016
• AWS, Azure, GCP • Bare metal • Red Hat OpenShift
• Mesosphere Enterprise DC/OS • Advanced operational & troubleshooting • Multi-tenancy • Networking, storage, security • DC/OS Universe
• AWS, Azure, GCP, etc • Bare metal
• Amazon Web Services
![Page 42: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/42.jpg)
©2016CouchbaseInc.
DevOps
42
![Page 44: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/44.jpg)
©2016CouchbaseInc.
![Page 45: Container Landscape in 2017](https://reader031.vdocuments.site/reader031/viewer/2022030313/58cea4531a28abb26e8b5c0f/html5/thumbnails/45.jpg)
©2016CouchbaseInc.
References
▪Docker: docs.docker.com ▪Kubernetes: kubernetes.io ▪DC/OS: dcos.io ▪AWS ECS: aws.amazon.com/ecs ▪Slides: github.com/arun-gupta/docker-java
45