Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Docker: The Future of Server Virtualization and Software Delivery

Steve Teo
November 05, 2014

Docker: The Future of Server Virtualization and Software Delivery

Docker (www.docker.com) is an open-source project that automates the deployment of applications inside software containers, by providing an additional layer of abstraction and automation of operating system–level virtualization on Linux.
Released barely more than 1 and half years ago, Docker is already in Production in numerous companies and in evaluation mode by countless others.

It is the most talked about project in the Cloud, Devops and Virtualization worlds in the past year and it has huge support from companies such as Google, Vmware, Redhat.

Introduction
- What is Docker?
- How do Docker Containers work?
Very Short Demo
Impact on
- Software Delivery
- Server Virtualization
Eco-system
Future Trends

Steve Teo

November 05, 2014
Tweet

More Decks by Steve Teo

Other Decks in Technology

Transcript

  1. Agenda Introduction What is Docker? How do Docker Containers work?

    Very Short Demo Impact on Software Delivery Server Virtualisation Eco-system Future Trends
  2. The Docker Project https://github.com/docker/docker Written in Golang Open source, Apache

    2.0 license Current Release: 1.3.1 Current Project Activity 16307 11413 Commits 4989 Pull Reqs
  3. The Docker Project Started as an internal project in dotCloud,

    a PAAS company Released on 13 March 2013 After pivoting, dotCloud was renamed Docker Inc. on 29 October 2013 PAAS business eventually sold off to fully focus on Docker http://blog.docker.com/2013/10/dotcloud- is-becoming-docker-inc/
  4. Docker Inc. CEO: Solomon Hykes Value-generating activities: Docker-related products and

    services Creating a network of certified professional support, training, and services providers Funding: $15M Series B (Jan 2014), $40M Series C (Sept 2014) Currently Valuation: $400 million
  5. Docker in Production The following from the back of my

    head Read about others @
 https://www.docker.com/resources/ usecases/
  6. Docker Convenient CLI + Management around LXC Containers Operating system–level

    virtualization Runs only on Linux machines for now Kernel 3.8+ Container/Host Architecture must match On-going work for Docker Support on Windows Server/Microsoft Azure
  7. Core Components Docker Daemon: used to manage docker (LXC) containers

    on the host it runs Docker CLI: used to command and communicate with the docker daemon Docker image index: a repository (public or private) for docker images
 https://registry.hub.docker.com/
  8. Core Elements Docker containers: directories containing everything-your- application Docker images:

    snapshots of containers or base OS (e.g. Ubuntu) images Dockerfiles: scripts automating the building process of images
  9. Docker Containers Also known as Light-weight VMs Key Features Application

    portability Isolating processes Preventing tampering with host Managing resource consumption
  10. Docker Containers Prevents Messing with other processes Causing "dependency hell”

    Or not working on a different system Being vulnerable to attacks and abuse all system's resources
  11. LXC Heritage - FreeBSD Jails No device emulation Provides Namespacing

    of pid (process) net (networking) ipc (inter-process communication) mnt (mount) uts (hostname) Docker team has replaced LXC with lib container
  12. AUFS Efficient Layering of Directory Structures Benefits Storage savings Faster

    Deployments Easier Upgrades Good Read http://blog.dotcloud.com/kernel- secrets-from-the-paas-garage-part-34-a
  13. Build Once, Run Anywhere Avoiding dependency hell Each application comes

    with its own dependencies Eliminates dependency conflicts and extensive test cases Reduce/Eliminate concerns about compatibility between target platforms
  14. Continuous Delivery Build containers which work from development all the

    way to production CI Platforms can be re-tuned to deploy containers for testing on different env Enables Immutable Infrastructure Fast delivery workflow, small changes encouraged instead of big bang changes
  15. Standardized Environments Easy for Sysadmins to set up standardised environments

    Ties in with configuration management tools Configuration management tools (eg. Chef, Puppet, Ansible) provide orchestration and bring host OS up to scratch (eg. install Docker) Docker takes over the application layer from that point onwards
  16. Deploy and Scale More Easily Docker containers run (almost) everywhere

    Easy to move applications around Light-weight containers ensures greater scaling elasticity - easy to scale up and scale down
  17. Enables thing not usually convenient Immutable Infrastructure - throwaway (easy

    to set up and tear down) Micro-services - one in every container?
  18. A look back in time The reasons for adoption of

    VMs Emulate hardware to run guest OS on differing host OS Utilize computing resources effectively Abstraction to resolve conflict contentions e.g. ports, cpu Easy provisioning of virtual machines (during the days of EC2)
  19. VMs vs Containers Containers setup and ‘boots’ in seconds compared

    to VMs Containers are more efficient when it comes to resources eg. space, ram Containers are isolated and can be limited as well, in its own way Qn: Do we really need the VM bacon then? Good reads http://www.infoq.com/news/2014/08/vm-containers- performance http://www.slideshare.net/Flux7Labs/performance-of- docker-vs-vms
  20. Value and Cost-Savings Get higher density and run more workloads

    No need for hypervisors, pack more containers onto a host Get more value out of every server Reduce spending on equipment and licenses
  21. CoreOS https://coreos.com/ Linux on Diet - Massive Server Deployments Light

    Footprint - 114MB Derived from ChromeOS Applications run as Docker Containers Painless, Safe Updates Clustered by Default and Service Discovery
  22. Many more! Google Kubernetes (Container Management, Orchestration, Configuration)
 https://github.com/GoogleCloudPlatform/ kubernetes

    Redhat’s Project Atomic (Similar to the goals of CoreOS + Kubernetes)
 http://www.projectatomic.io http://www.mindmeister.com/389671722/ docker-ecosystem
  23. ~2000 2014 Long Lived Development is iterative and constant Monolithic

    and built on a single stack Built from loosely coupled components Deployed to a single server Deployed to a multitude of servers Shift in Application Delivery
  24. Changes to the Cloud Status Quo Shift in IAAS providers

    to move away from virtualization towards bare metal servers
 http://virtualizationreview.com/articles/ 2014/10/29/containers-virtual-machines- and-docker.aspx Most Public PAAS will support Docker as a first-class citizen OpenStack + Openshift + Docker = Marriage made in heaven, enables private PAAS for enterprises
  25. Before I End Imagine you had the chance to adopt

    Docker, ask yourself some questions What kind of use-cases can you come up for leveraging Docker? Do our servers really need virtual machines or can we actually go bare metal? How to manage and orchestrate massive docker scaling?