Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Container Landscape in 2017

Container Landscape in 2017 - Provides an overview of CNCF, OCI, and Container orchestration frameworks

  • Login to see the comments

Container Landscape in 2017

  1. 1. What the containers? Arun Gupta, @arungupta
  2. 2. ©2016 Couchbase Inc. Docker Captain Java Champion JavaOne Rock Star (4 years) NetBeans Dream Team Silicon Valley JUG Leader Author Runner Lifelong learner 2
  3. 3. ©2016 Couchbase Inc.
  4. 4. ©2016 Couchbase Inc.
  5. 5. ©2016 Couchbase Inc.
  6. 6. ©2016 Couchbase Inc. 6 Malcom McLean Father of Containerization
  7. 7. ©2016 Couchbase Inc. Intermodalism 7 “pertaining to or suitable for transportation involving more than one form of carrier”
  8. 8. ©2016 Couchbase Inc.
  9. 9. ©2016 Couchbase Inc. Advantages of Containerization ▪Standard transport product ▪Flexibility of usage ▪Economies of scale ▪Speed ▪Security ▪Lower labor costs ▪Efficient stacking ▪Boom in international trade 9
  10. 10. ©2016 Couchbase Inc. Bare Metal 10 Physical Server Operating System Application
  11. 11. ©2016 Couchbase Inc. Virtual Machines 11 Physical Server Host Operating System Hypervisor Virtual Machine Guest OS Application Virtual Machine Guest OS Application Virtual Machine Guest OS Application
  12. 12. ©2016 Couchbase Inc. Containers 12 Physical Server Host Operating System Container Application Container Application Container Application Container Runtime
  13. 13. ©2016 Couchbase Inc. Advantages of Containerization ▪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
  14. 14. ©2016 Couchbase Inc. • Cloud-native • Microservices • DevOps • Docker
  15. 15. ©2016 Couchbase Inc. 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
  16. 16. ©2016 Couchbase Inc. ▪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
  17. 17. ©2016 Couchbase Inc.
  18. 18. ©2016 Couchbase Inc. 18 promote a set of common, minimal, open standards and specifications around container technology
  19. 19. ©2016 Couchbase Inc. OCI Projects 19 1.0.0.RC4 1.0.0.RC5
  20. 20. ©2016 Couchbase Inc. OCI Image Spec ▪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
  21. 21. ©2016 Couchbase Inc. OCI Runtimes 21 https://github.com/opencontainers/runtime-spec/blob/master/implementations.md
  22. 22. ©2016 Couchbase Inc. 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
  23. 23. ©2016 Couchbase Inc. 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 23 0.2.5
  24. 24. ©2016 Couchbase Inc. Docker Engine containerd containerd-shim containerd-shim containerd-shim runC runC runC. . . . . . TODAY
  25. 25. ©2016 Couchbase Inc. Containerd and Docker 25
  26. 26. ©2016 Couchbase Inc. TODAY
  27. 27. ©2016 Couchbase Inc. FUTURE
  28. 28. ©2016 Couchbase Inc. Containerd and Orchestration Frameworks 28 FUTURE
  29. 29. ©2016 Couchbase Inc. 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
  30. 30. ©2016 Couchbase Inc. Container Workflow 30
  31. 31. ©2016 Couchbase Inc. Orchestration Frameworks ▪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
  32. 32. ©2016 Couchbase Inc. Orchestration Frameworks 32
  33. 33. ©2016 Couchbase Inc. Local Development 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
  34. 34. ©2016 Couchbase Inc. Core Concepts 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
  35. 35. ©2016 Couchbase Inc. Create Docker Image Containers and Java Developers 35 Build 
 Archive Push to Registry Deploy Application
  36. 36. ©2016 Couchbase Inc. Docker Image with Maven 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>
  37. 37. ©2016 Couchbase Inc. Application Definition 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
  38. 38. ©2016 Couchbase Inc. Application Definition 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
  39. 39. ©2016 Couchbase Inc. Application Definition 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" } } ] }
  40. 40. ©2016 Couchbase Inc.
  41. 41. ©2016 Couchbase Inc. 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
  42. 42. ©2016 Couchbase Inc. DevOps 42
  43. 43. ©2016 Couchbase Inc. We’re hiring! jobs@couchbase.com couchbase.com/careers
  44. 44. ©2016 Couchbase Inc.
  45. 45. ©2016 Couchbase Inc. 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

×